2015-10-30 38 views
2

我正在做一个应用程序,当您点击input时,会出现一个虚拟键盘。减量应该是ng-model的递减food.Pezzi,并且它工作正常。但增量不起作用:它会添加'1'。为什么? PLUNKER CODEANGULAR中的增量数不起作用

(奇怪的是,你按递减之前按增量,增量工程....)

标记

<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> 

感谢您的建议

回答

2

更改代码为var itemToClone = { "Selection": "", "Pezzi": 0 };而不是var itemToClone = { "Selection": "", "Pezzi": "" };。您正在使用空字符串进行初始化,以将其附加到字符串而不是添加数字。

在其他地方也一样。修改输入后,必须使用parseInt键入字符串。

更新

这weired。让我们添加一个方法,在你的控制器是这样的:

$scope.inc = function(food) { 
    food.Pezzi = food.Pezzi || "0" 
    food.Pezzi = parseInt(food.Pezzi.toString()) + 1; 
}; 

现在,修改你的增量按钮的ng-click喜欢这样:ng-click="inc(food)"

+0

谢谢@Sarrus已经完成。 :-) –

+0

我试过了,但它不起作用,它清除所有并写入“1”! http://plnkr.co/edit/XbLYCLtwjAlUEpdkk2Pg?p=preview – panagulis72

+0

我已经更新了答案。请检查一下。你可以为减量按钮做同样的事情。 –

2

你使用AngularJS在一个糟糕的方式:首先,从来没有把业务逻辑在你的意见。

顺便说一句,你的错误取决于物业Pezzi,您需要用数字来工作,但是,在JavaScript中的数学运算,将+运算符用于甚至字符串连接的类型。 ..看看下面的两个例子:(第一个是正确的,第二个,因为失去了类型,另外执行字符串连接而不是总和)。

angular 
 
    .module('test', []) 
 
    .controller('TestCtrl', function($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() { 
 
     return typeof 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 = function() { 
 
     return typeof vm.foodCloned.pezzi; 
 
    } 
 
    
 
    }) 
 
;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<article ng-app="test"> 
 
    <div ng-controller="TestCtrl"> 
 
    
 
    <button ng-click="decrement($event)">Decrement</button> 
 
    <button ng-click="increment($event)">Increment</button> 
 
    <button ng-click="reset($event)">Reset</button> 
 
    
 
    
 
    <h1 ng-bind="food | json"></h1> 
 
    <div ng-bind="getType()"></div> 
 
    <hr><hr> 
 
    
 
    
 
    <button ng-click="decrementCloned($event)">Decrement</button> 
 
    <button ng-click="incrementCloned($event)">Increment</button> 
 
    <button ng-click="resetCloned($event)">Reset</button> 
 
    
 
    
 
    <h1 ng-bind="foodCloned | json"></h1> 
 
    <div ng-bind="getClonedType()"></div> 
 
    </div> 
 
</article>

+0

非常感谢! – panagulis72