2013-05-31 49 views
0

當我按下按鈕時,我想在我的控制檯中打印我的文本框的值。但我的文本框返回一個未定義的。看起來,所有的代碼都工作得很完美,我做了和之前使用的其他代碼一樣的方式,但它現在不能工作。AngularJS文本框的值返回undefined

這是我的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> 

這是我的腳本:

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 = "";  }; 
} 

爲什麼我的文本框未定義,?

+0

的例子請,顯示你所有的代碼存儲。聽起來你有控制器的問題。爲什麼使用'$ rootScope'? –

+0

添加了我的更多代碼。 BoekenCtrl和HomeCtrl工作正常。我使用$ rootScope',因爲該應用程序很簡單,並且不需要服務。 –

+0

所以你的表單引用'OrderCtrl'。你是否嘗試將日誌打印到'OrderCtrl'(不在函數中)?我認爲改爲'$ rootScope.order = function()'使用'$ scope.order = function()'。因爲在html中你使用了特定的'範圍'。關於'body?'ng-controller =「OrderCtrl」? –

回答

0

相反

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

使用:

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

由於您的形式OrderCtrl下存在,你需要使用$scopeOrderCtrl控制器獲取任何數據。但是,當然,你可以把它之後$rootScope

請參閱Fiddle

+0

您的意思是$ rootscope.order或$ scope.orde。因爲$ scope.order會給出錯誤。 –

+0

,因爲'OrderCtrl'只與'$ rootScope'留在一起,對不起,已修復 –

+0

問題沒有通過上面的代碼解決。仍然得到未定義。 –