Javascript 如何在指令中从控制器获取值

Javascript 如何在指令中从控制器获取值,javascript,ajax,angularjs,Javascript,Ajax,Angularjs,所以我使用angular js,我有一个控制器和一个指令 directive = -> scope: items: "=mkTagsInput" link: (scope, element, attributes, controller) -> $(element[0]).tagsinput() $(element[0]).tagsinput('input').typeahead name: "l

所以我使用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)


这就是我调用指令的方式。问题是我用[]初始化标签数组。我还发出了一个Ajax请求来加载数据,但该指令似乎被加载到了早期,因此in scope.items的值始终为[]


你知道我如何解决这个问题吗?

你可以做的是在指令范围
项上创建一个监视。这样,当项目集合更新时,您将收到通知

scope.$watch('items',function(newValue,oldValue) {
  if(newValue) {
      //Your item conllection is in newValue
   }
}); 
基本上,只要更改对items集合的引用,就会触发一个watch。如果您使用的是angularjs 1.2.0 RC,那么也可以在范围中查找方法
watchCollection
。请参阅此处的文档。$rootScope.Scope

scope.$watch('items',function(newValue,oldValue) {
  if(newValue) {
      //Your item conllection is in newValue
   }
});