Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以角度为单位的增量数';行不通_Javascript_Angularjs_Html_Increment_Angularjs Ng Click - Fatal编程技术网

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”
(处理边缘条件)对其进行初始化。这真是一段漂亮的代码。也很干净整洁!!