我正在开发一个基于角度1和离子1的离子应用程序,我有两个输入框,ng-model
属性设置。基本上我想改变其他输入框的值,如果他们的任何一个值被更改。问题是它工作正常,当我更改input-box-1中的值时,input-box-2中的值会发生变化,但是当我更改input-box-2时,它不会反映输入的变化 - box-1,反之亦然。
我尝试使用控制台记录值,这些变化发生了,但不会被反映出来。
在此处找到代码片段
$scope.updateValues = function(option,values) {
switch (option) {
case "msrp_gp_parsent":
$scope.msrp_gp_parsent = values;
$scope.averagecost = (Math.abs((values - 100) * $scope.msrp_price)) / 100;
$scope.standardcost = Math.abs((100 * $scope.averagecost) / ($scope.msrp_gp_parsent - 100));
break;
case "averagecost":
$scope.averagecost = values;
productDetailsDataFactory.getProductDetails().Pricing.AverageCost = values;
$scope.msrp_gp_parsent = (($scope.msrp_price - values) / $scope.msrp_price) * 100;
break;
default:
}
<input type="number" ng-model="averagecost" name=""
ng-keyup="updateValues('averagecost',averagecost)">
<input type="number"
ngkeyup="updateValues('msrp_gp_parsent',msrp_gp_parsent)" />
答案 0 :(得分:0)
<input type="number" ng-model="averagecost"
̶n̶g̶-̶k̶e̶y̶u̶p̶ ng-change="updateValues('averagecost',averagecost)" />
<input type="number" ng-model="msrp_gp_parsent"
̶n̶g̶-̶k̶e̶y̶u̶p̶ ng-change="updateValues('msrp_gp_parsent',msrp_gp_parsent)" />
ng-model和ng-keyup都将keyup事件侦听器放在元素上,并且无法保证首先执行哪些代码。 ng-change指令与ngModelController集成,只有在用户输入更改ng-model值后才能正确执行。
答案 1 :(得分:0)
这里有两个问题
#1的解决方案是 - 使用微调器时不会触发键盘事件。改为使用改变事件。
#2的解决方案是 - 在代码中处理NaN。
Fiddle forked from yours to show - https://jsfiddle.net/mohanramphp/1ehf49he/24/