所以我使用角度js,我有一个控制器和一个指令。
directive = ->
scope:
items: "=mkTagsInput"
link: (scope, element, attributes, controller) ->
$(element[0]).tagsinput()
$(element[0]).tagsinput('input').typeahead
name: "list"
local: scope.items
到目前为止,这是我的指令(在coffescript中)。
<input type="text" data-role="tagsinput" mk-tags-input="labels" />
这就是我调用指令的方式。问题是我使用[]初始化标签数组。我也提出了一个加载数据的Ajax请求,但该指令似乎是早期加载的,所以在scope.items中总是以[]作为值。
知道如何解决这个问题吗?
答案 0 :(得分:1)
您可以做的是在指令范围items
上创建监视。通过这种方式,当项目集合更新时,您将收到通知
scope.$watch('items',function(newValue,oldValue) {
if(newValue) {
//Your item conllection is in newValue
}
});
基本上,任何时候都会触发手表以引用项目集合的更改。如果你在angularjs 1.2.0 RC上,那么也在范围上寻找方法watchCollection
。请参阅此处的文档http://code.angularjs.org/1.2.0rc1/docs/api/ng。$ rootScope.Scope