我的观点是这样的:
<input placeholder="Search" type="text" ng-change="searchChange()" ng-model="mySearch" ng-model-options="{debounce: 1000}">
然后在我的控制器中我有:
angular.module('app.controllers', [])
.controller('listViewCtrl', ['$scope', '$stateParams', '$http',
function ($scope, $stateParams, $http) {
$http.get('http://www.domain.co.uk/api/search.php').
then(function(response) {
$scope.food = response.data;
});
$scope.searchChange = function() {
console.log($scope.mySearch);
};
}])
但这给了我“未定义”。
如何引用控制器中 mySearch 输入字段的值?
您的输入字段可能位于单独的范围内,该范围未正确更新。ngIf
and ng-repeat
是创建单独子范围的指令的常见示例。 (看本文 https://github.com/angular/angular.js/wiki/Understanding-Scopes有关范围的更多信息)
虚线范围变量
为了保护自己免受此类问题的影响,您可以将变量存储在对象中。
<input placeholder="Search" type="text" ng-change="searchChange()" ng-model="my.search" ng-model-options="{debounce: 1000}">
$scope.my = {search: ""};
$scope.searchChange = function() {
console.log($scope.my.search);
};
命名控制器
或者按照角度风格指南中的建议专门命名您的控制器Y030 https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#style-y030.
将变量作为参数传递
第三种选择是将变量作为参数传递给函数:
<input placeholder="Search" type="text" ng-change="searchChange(mySearch)" ng-model="mySearch" ng-model-options="{debounce: 1000}">
$scope.searchChange = function(mySearch) {
console.log(mySearch);
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)