2014-03-26 57 views
0

我有以下指令,並且爲了使我的expressnum函數能夠在我的模板中進行評估,我需要使用scope.expressnum = scope.expressnum();。它有效,但我不知道爲什麼。我想也許這可能與綁定或呼叫命令有關,我嘗試了Google搜索,但似乎無法找到任何東西,很可能是因爲我不知道要尋找什麼。如果有人可以向我解釋這個,我怎麼可能離開scope.expressnum = scope.expressnum();,仍然能夠在我的模板中使用它,我將不勝感激。爲什麼我需要scope.property = scope.property()才能使表達式正常工作?

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

但通過將'expressnum(bindnum)'放在一個表達式中,它不會執行它嗎? – jonnie

+1

@jonnieM - 不會。您會發現'scope.expressnum'將包含一個包裝表達式的函數。像'function(){return expressnum(bindnum); }' –

相關問題