【发布时间】:2014-03-24 14:46:49
【问题描述】:
我正在使用某些版本的 jquery 自动完成作为 angularjs 指令。
当 jquery 使用 element.val() 更新输入值时,角度直到下一个摘要(我想)之后才注意到变化。
我的第一个想法是使用$timeout 对ng-model 帖子摘要执行操作,但您可以看到它没有帮助。
我的第二种方法是覆盖元素的 val 函数以触发 input 事件,但我没有设法使其工作。
尝试从自动完成列表中选择一个值,您会看到上面的 ng-model 没有更新。
更新
感谢您的回复。我不知道onSelect 选项。
这是根据您的建议编写的代码
// clone user provided options
scope.options = _.extend({}, scope.AutoCompleteOptions());
// Wrap onSelect - Force update before manipulation on ng-model
var fn = _.has(scope.AutoCompleteOptions(), 'onSelect') ? scope.AutoCompleteOptions().onSelect : _.noop;
scope.options.onSelect = function () {
ngModelCtrl.$setViewValue(element.val());
scope.$apply(fn);
};
scope.autocomplete = $(element).autocomplete(scope.options);
这样我维护指令的接口,同时保证ng-model 是最新的。
谢谢。
【问题讨论】: