为什么我需要scope.property = scope.property()才能使表达式工作?

时间:2014-03-26 19:53:19

标签: javascript angularjs angularjs-directive

我有以下指令,为了让我的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>'

    };

});

1 个答案:

答案 0 :(得分:1)

因为范围定义中的&修饰符绑定到表达式而不是执行该表达式所产生的值。您的语句只是执行表达式并存储值。