我有以下指令,为了让我的expressnum
函数在我的模板中进行评估,我需要使用scope.expressnum = scope.expressnum();
。它有效,但我不知道为什么。我想也许它可能与绑定或呼叫顺序有关,我尝试使用谷歌搜索,但似乎找不到任何东西,很可能是因为我真的不知道该寻找什么。如果有人可以向我解释这个问题,以及我如何可以省略scope.expressnum = scope.expressnum();
并仍然能够在我的模板中使用它,我将非常感激。
app.directive('simplyIsolated', function () {
return{
restrict: 'EA',
replace: true,
scope:{
attnum: '@numone'
,bindnum: '=numtwo'
,expressnum: '&sq'
}
,link: function (scope, elem, attr){
scope.expressnum = scope.expressnum();
}
,template:'<div><p> using "@" = {{attnum+attnum}}</p>'+
'<p>using "=" {{bindnum+bindnum}}</p>'+
'<p>using "&" {{expressnum(bindnum)}}</p><br/><p>{{y}}</p>'+
'</div>'
};
});
答案 0 :(得分:1)
因为范围定义中的&
修饰符绑定到表达式而不是执行该表达式所产生的值。您的语句只是执行表达式并存储值。