【发布时间】:2013-09-25 10:35:34
【问题描述】:
我在过去的 5 个小时里一直在尝试,但没有成功... 这是代码..
在视图中:
<input type="text" ng-model="foo" auto-complete/>Foo = {{foo}}
在控制器中:
myapp.directive('autoComplete', function(autoCompleteDataService) {
return {
restrict: 'A',
link: function(scope, elem, attr, ctrl) {
elem.autocomplete({
source: autoCompleteDataService.getSource(), //from your service
select: function( event, ui ) {
scope.foo= ui.item.label;
scope.$apply;
},
change:function (event, ui) {
if (ui.item === null) {
scope.foo = null;
}
},
minLength: 2
});
}
};
});
myapp.factory('autoCompleteDataService', [function() {
return {
getSource: function() {
return ['apples', 'oranges', 'bananas'];
}
}
}]);
问题来了……
选中的项目正在进入输入框,但输入框旁边的 foo 变量没有更新。
错在哪里。
请建议...
【问题讨论】:
-
尝试将
scope.$apply;更改为scope.$apply(); -
哇.. 成功了...我可能早点来 SOF.. 谢谢 CodeHater..
-
如何将此评论标记为答案?
-
我已将我的评论添加为下面的答案
-
最好将这两行更改为:
scope.$apply(function() { scope.foo = ui.item.label; });,这样scope.foo分配将在角度上下文中执行。这样 Angular 可以管理任何错误。
标签: javascript jquery angularjs angularjs-directive jquery-ui-autocomplete