Javascript 某些赋值运算符不使用';我不能用AngularJS表达式。。为什么不呢?
AngularJS文档只列出了Angular表达式和JS表达式()之间的四个区别:Javascript 某些赋值运算符不使用';我不能用AngularJS表达式。。为什么不呢?,javascript,angularjs,assignment-operator,Javascript,Angularjs,Assignment Operator,AngularJS文档只列出了Angular表达式和JS表达式()之间的四个区别: 属性评估(针对范围而非全局窗口) 原谅(对未定义的和空的) 不允许使用控制流语句 过滤器(表达式计算的结果可以通过过滤器链传递) 但是算术赋值运算符在表达式中也不起作用。例如,“加号等于”+=和“减号等于”-=会在等号后面的常量上引发错误 这些赋值运算符在表达式中允许存在问题,有什么特别的原因吗?或者这仅仅是一个实施优先事项的问题 是否有一种特定于角度的递增和递减方式?目前,人们似乎只能键入完整的somelong
未定义的和空的)李>
不允许使用控制流语句李>
过滤器(表达式计算的结果可以通过过滤器链传递)
但是算术赋值运算符在表达式中也不起作用。例如,“加号等于”+=
和“减号等于”-=
会在等号后面的常量上引发错误
这些赋值运算符在表达式中允许存在问题,有什么特别的原因吗?或者这仅仅是一个实施优先事项的问题
是否有一种特定于角度的递增和递减方式?目前,人们似乎只能键入完整的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)">
这些赋值运算符在表达式中允许存在问题,有什么特别的原因吗?或者这仅仅是一个实施优先事项的问题
我会说这是一个组合
实施优先级(见v1.2)和
@Sharondio在上面的评论中提到了什么:视图通常不是表达式的位置——控制器是
您似乎指的是角度视图表达式(您可以在实际视图中的{}标记中执行的操作)。Angular允许在视图中发生一些事情,但更喜欢在控制器、指令或服务中发生大部分繁重的工作。也许如果您解释了您试图在视图表达式中实现什么,我们可以给出更好的答案。文档中的术语非常清楚:“表达式是类似JavaScript的代码片段,通常放在绑定中,例如{{expression}
。表达式由$parse服务处理。”我试图实现的是通过ng click=“…”
增加和减少$scope
中的数字变量。如果我理解正确,在{…}
中给出的表达式和作为指令值(如ofng click
)的表达式的计算结果是类似的。