Javascript 以角度为单位的增量数';行不通
我在做一个应用程序,有一个虚拟键盘,当你点击Javascript 以角度为单位的增量数';行不通,javascript,angularjs,html,increment,angularjs-ng-click,Javascript,Angularjs,Html,Increment,Angularjs Ng Click,我在做一个应用程序,有一个虚拟键盘,当你点击输入时会显示出来。减量应该是ng型号的减量food.Pezzi,它工作正常。但增量不起作用:它添加了一个“1”。为什么? (奇怪的是,你在按递增之前先按减量,递增就起作用了……) 标记 <td> <a data-role="button" data-theme="e" ng-click="food.Pezzi = food.Pezzi-1; " style="background-color: rgba(246,
输入时会显示出来。减量应该是ng型号的减量food.Pezzi
,它工作正常。但增量不起作用:它添加了一个“1”。为什么?
(奇怪的是,你在按递增之前先按减量,递增就起作用了……)
标记
<td>
<a data-role="button" data-theme="e" ng-click="food.Pezzi = food.Pezzi-1; "
style="background-color: rgba(246, 246, 246, 0.2); border-color: rgba(0, 0, 0, 0.27); text-shadow: 0px 1px 0px #F3F3F3;color: #333;">
Decrement
</a>
</td>
<td>
<a data-role="button" data-theme="b" class="zero" ng-click='food.Pezzi=food.Pezzi.toString()+"0"'>
0
</a>
</td>
<td>
<a data-role="button" data-theme="e" class="pos" ng-click='food.Pezzi = food.Pezzi + 1'
style="background-color: rgba(246, 246, 246, 0.2); border-color: rgba(0, 0, 0, 0.27); text-shadow: 0px 1px 0px #F3F3F3;color: #333;">
Increment
</a>
</td>
减量
0
增量
感谢您的建议将您的代码更改为var itemToClone={“Selection”:“,”Pezzi“:0}代码>而不是var itemToClone={“Selection”:“Pezzi”:“}代码>。您正在使用一个空字符串进行初始化,它将附加到字符串而不是添加数字
其他地方也是如此。修改输入后,必须使用parseInt
键入并强制转换字符串
更新
真奇怪。让我们在控制器中添加如下方法:
$scope.inc = function(food) {
food.Pezzi = food.Pezzi || "0"
food.Pezzi = parseInt(food.Pezzi.toString()) + 1;
};
现在,修改您的增量按钮的ng click
如下:ng click=“inc(food)”
首先,您使用AngularJS的方式很糟糕,千万不要将业务逻辑放在视图中
顺便说一句,您的bug取决于属性Pezzi的类型,对于数学运算,您需要处理数字,但是在javascript中,+运算符甚至用于字符串连接。。。请看以下两个示例:(第一个是正确的,第二个是因为丢失了类型,另外还执行字符串连接而不是求和)
angular
.module('测试',[]))
.controller('TestCtrl',函数($scope){
var vm=$scope;
vm.food={pezzi:0};
vm.increment=function(){vm.food.pezzi+=1;};
vm.decrement=function(){if(vm.food.pezzi>0)vm.food.pezzi-=1;};
vm.reset=function(){vm.food.pezzi=0;};
vm.getType=function(){
返回vm.food.pezzi的类型;
}
vm.foodCloned={pezzi:0+'''};
vm.incrementCloned=function(){vm.foodCloned.pezzi+=1+'';};
vm.decrementCloned=function(){vm.foodCloned.pezzi-=1+“”;};
vm.resetCloned=function(){vm.foodCloned.pezzi=0+'';};
vm.getClonedType=函数(){
返回vm.foodCloned.pezzi的类型;
}
})
;代码>
减量
增量
重置
减量
增量
重置
我已经尝试过了,但它不起作用,它会清除所有内容并写入“1”!我已经更新了答案。请检查一下。您也可以对减量按钮执行同样的操作。此外,如果您的plunkr不起作用,请告诉我。我将分享我的编辑。它工作得很好,谢谢你一个战利品!p、 Pezzi | | | |“0”是什么意思?很高兴,这很有效。请随意接受答案food.Pezzi | |“0”
表示如果food.Pezzi
中存在未定义的、null
或0
值,那么它将使用“0”
(处理边缘条件)对其进行初始化。这真是一段漂亮的代码。也很干净整洁!!