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

时间:2013-09-26 09:14:56

标签: javascript ajax angularjs

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

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

1 个答案:

答案 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