角度指令从自己的范围调用函数

时间:2015-04-15 20:56:43

标签: angularjs angularjs-directive angularjs-scope

我正在构建一个显示项目列表的Angular指令。项目列表由该指令自己的scope中的函数提供。下面是我正在做的事情的基本版本(listOpts需要是fn而不是静态数据)。编译模板时,不评估listOpts,因此模板返回空ul。当我将listOpts fn放在父controller中时,它会对其进行评估。但是我不想因为SRP(单一责任原则)而将listOpts功能放在控制器中; listOpts函数属于list指令,而不是controller。我必须误解一些有关指令如何工作或何时编译模板的内容?我应该将listOpts fn放在controller fn中吗?

@app.directive "list", () ->
  restrict: "E"
  link: (scope, el, attrs, ctrl) ->
    scope.listOpts = ()->
      return [1,2,3]

  template: "
    <ul ng-repeat='item in listOpts()'>
      <li>{{item}}</li>
    <ul>
  "

1 个答案:

答案 0 :(得分:1)

提供的示例代码似乎按原样运行:

http://plnkr.co/edit/r589eFGZm8MOTk94GJtk?p=preview

刚修改为使用常规JS,这里的问题到底是什么,你可以在plnkr中重现这个问题。

.directive("list", function() {
  return {
  restrict: "E",
  link: function(scope, el, attrs, ctrl){ scope.listOpts = function(){return [1,2,3];}},
  template: "<ul ng-repeat='item in listOpts()'><li>{{item}}</li><ul>"
  }
})