0

所以我正在使用 Angular 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 中总是 [] 作为值。

知道我该如何解决吗?

4

1 回答 1

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

于 2013-09-26T09:28:45.807 回答