我有几个绑定到不同模型字段的输入,例如model.a
和model.b
,我需要发送服务器请求以获取自动完成数据。所以两者的逻辑都是一样的。
我想向每个人添加ng-change="changeHandler()"
指令。但是在changeHandler()
里面我需要获得输入值 - 如何正确地做到这一点?我不能只拿一些模型字段,因为我对这两个字段都有相同的代码。
答案 0 :(得分:2)
如果你想在没有在每次更改的情况下为Web API启动GET的情况下执行此操作,那么您将不得不变得更加复杂。
在model.a
或model.b
(或两者)
在$ watch处理程序中,通过Promise拉出自动完成结果,看起来有点像这样:
myModule.factory('HelloWorld', function($q, $timeout) {
var getMessages = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve(['Hello', 'world!']);
}, 2000);
return deferred.promise;
};
return {
getMessages: getMessages
};
});
// from: http://markdalgleish.com/2013/06/using-promises-in-angularjs-views/
然后将自动完成绑定到Promise的结果。
你也想要去除你的更改,这个SO帖子可能会有所帮助:How to write a debounce service in AngularJS
我认为这篇博文可能有所帮助:http://www.grobmeier.de/angular-js-autocomplete-and-enabling-a-form-with-watch-and-blur-19112012.html#.UkMBIB1Dsak
答案 1 :(得分:1)
将模型名称作为参数传递给更改函数:
<input type='text' ng-model='testinput' ng-change='changeHandler(testinput)'/>
答案 2 :(得分:1)
你可以将这一切包装在一个可以访问scope.model.a的指令中,或者你可以这样做:
ng-change="chanageHandler(model.a)" ng-model="model.a"