2013-05-31 3 views
0

Lorsque j'appuie sur le bouton, je veux imprimer la valeur de ma zone de texte dans ma console. Mais ma zone de texte renvoie un indéfini. Il semble que tout le code fonctionne parfaitement, je l'ai fait de la même manière qu'un autre code que j'ai utilisé auparavant, mais cela ne fonctionne pas maintenant.La valeur de la zone de texte AngularJS renvoie undefined

Ceci est mon code html:

<form class="form-horizontal">  
    <input type="text" ng-model="add" ng-model-instant><button class="btn" ng-click="order()"><i class="icon-plus"></i>Order!</button> 
</form> 

Ceci est mon script:

angular.module('MyApp', []). 
config(function($routeProvider) { 
    $routeProvider. 
     when('/boeken', {templateUrl:'partials/boeken.html', controller:BoekenCtrl}). 
     when('/orders', {templateUrl:'partials/orders.html', controller:OrderCtrl}). 
     when('/home', {templateUrl:'partials/home.html', controller:HomeCtrl}). 
     otherwise({redirectTo:'/home'}); 
}); 

//BoekenCtrl 

//HomeCtrl 

function OrderCtrl($rootScope) {  
    $rootScope.order = function() { console.log($rootScope.add); $rootScope.add = "";  }; 
} 

Pourquoi est-ce que ma zone de texte est non défini?

+0

s'il vous plaît, montrer tout votre code. Sonne que vous avez un problème avec le contrôleur. Et pourquoi utilisez-vous $ rootScope? –

+0

Ajout de plus de mon code. Le BoekenCtrl et HomeCtrl fonctionnent bien. J'utilise le $ rootScope parce que l'application est simple et qu'un service n'est pas nécessaire. –

+0

Ainsi, votre formulaire fait référence à 'OrderCtrl'. avez-vous essayé d'imprimer le journal dans 'OrderCtrl' (pas en fonction)? Je pense plutôt '$ rootScope.order = function()' utilise '$ scope.order = function()'. Parce que dans html vous utilisez spécifique 'scope'. Que dire de 'body?' Ng-controller = "OrderCtrl"? –

Répondre

0

Au lieu

function OrderCtrl($rootScope) {  
$rootScope.order = function() { console.log($rootScope.add); $rootScope.add = "";  }; 
} 

utilisation:

function OrderCtrl($scope) {  
$scope.order = function() { 
    console.log($scope.add); 
    $scope.add = ""; 
}; 
} 

Étant donné que votre formulaire existe sous OrderCtrl, vous devez utiliser $scope dans OrderCtrl contrôleur pour récupérer les données. Mais, bien sûr, vous pouvez stocker après dans $rootScope

S'il vous plaît, voir l'exemple Fiddle

+0

Vouliez-vous dire $ rootscope.order ou $ scope.orde. Parce que $ scope.order donne une erreur. –

+0

car 'OrderCtrl' reste avec' $ rootScope' seulement, désolé, corrigé –

+0

Le problème n'est pas résolu avec le code ci-dessus. Toujours obtenir le non défini. –

Questions connexes