一些赋值运算符在AngularJS表达式中不起作用..为什么不呢?

时间:2013-07-23 21:11:17

标签: javascript angularjs assignment-operator

AngularJS文档仅列出了Angular表达式和JS表达式之间的四个区别(docs):

  1. 属性评估(针对范围而非全局窗口);
  2. 宽恕(undefinednull);
  3. 不允许使用控制流程语句;
  4. 过滤器(表达式评估的结果可以通过过滤器链传递)。
  5. 但算术赋值运算符也不能在表达式中起作用。例如,“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)">
    

1 个答案:

答案 0 :(得分:1)

  

为什么这些赋值运算符在表达式中允许存在问题?或者这仅仅是实施优先事项的问题?

我会说这是

的组合
  1. 实施优先级(参见v1.2中的Brad and Igor video talking about expression support)和
  2. @Sharondio在上面的评论中提到:视图通常不是表达式的地方 - 控制器是。