我正在构建一个显示项目列表的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>
"
答案 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>"
}
})