2
的AngularJS文檔僅列表角表達式和JS表達式之間的四個差(docs):有些賦值操作符不能在AngularJS表達式中工作。爲什麼不呢?
- 屬性評價(對範圍而不是全局窗口);
- Forgiving(至
undefined
和null
); - 不允許控制流程語句;
- 過濾器(表達式評估的結果可以通過過濾器鏈)。
但算術賦值運算符在表達式中也不起作用。例如,「plus-equals」+=
和「minus-equals」-=
在等號後的常數上出現錯誤。
是否有一個特定的原因,爲什麼這些賦值操作符在表達式中允許有問題?或者這只是一個實施重點問題?
有沒有可能是一種特定於角度的遞增和遞減方式?目前,人們似乎需要輸入完整的somelongname = somelongname + x
,或者將增量和減量定義爲控制器中的函數。其他算術賦值運算符也是如此。
一個簡短的例子,我用什麼來增量和減量作爲解決方法。它的作品,但它是優雅的?
在控制器:
$scope.incr = function(number, constant){
$scope[number] += constant;
};
$scope.decr = function(number, constant){
$scope[number] -= constant;
};
在HTML:
<button class="btn" ng-disabled="currentPage == 0" ng-click="decr('currentPage', 1)">
您似乎指的是角度視圖表達式(您可以在實際視圖中的{}標記內執行的操作)。 Angular允許在視圖中發生一些事情,但更傾向於在控制器,指令或服務中發生大部分繁重工作。也許如果你在視圖表達中解釋了你想要達到的目標,我們可以給出更好的答案。 – Sharondio
文檔中的術語非常明確:「表達式是類似JavaScript的代碼片段,通常放置在綁定中,例如'{{expression}}'。表達式由$ parse服務處理。」我試圖實現的是通過'ng-click =「...」'在'$ scope'中增加和減少數字變量。如果我理解正確,那麼在{{{...}}中給出的表達式和作爲指令值(例如'ng-click')的評估方式也會類似。 – AliOli