我有以下输入
<input id="mainOdd1Id" type="number" ng-model="data.mainOdd1" min="0" step="any" ng-attr-placeholder="{{data.mainOdd1}}" ng-focus="focus($event)" ng-blur="blur($event)">
下面的函数在模糊时执行
$scope.blur = function($event){
var id = $event.target.getAttribute('id');
switch(id) {
case "mainOdd1Id":
$scope.data.mainOdd1 = func($scope.data.mainOdd1);
break;
case "mainOdd2Id":
$scope.data.mainOdd2 = func($scope.data.mainOdd2);
break;
case "bkOdd1Id":
$scope.data.bkOdd1 = func($scope.data.bkOdd1);
break;
case "bkOdd2Id":
$scope.data.bkOdd2 = func($scope.data.bkOdd2);
break;
default:
break;
}
}
我想通过 id 获取指向数据字段的“指针”并更改它来避免 switch 命令。 (*指针=函数(*指针))
这可能吗?
谢谢
最佳答案
您可以使用括号表示法按名称访问属性。
假设您有一个包含属性名称 propertyName
的变量。然后您可以访问一些对象 obj
属性,如下所示 var propertyValue = obj[propertyName]
。
这应该可以解决问题。如果您保持相同的命名约定,则元素的 id 就是 propName + 'Id'
$scope.blur = function($event){
// convert mainOdd1Id -> mainOdd1
var id = $event.target.id.replace(/Id$/, '');
if(id in $scope.data) { // check if prop is in scope.data
$scope.data[id] = func($scope.data[id]); // perform update
}
}
或者您可以从模板内传递正确的属性名称
<input id="mainOdd1Id" ... ng-focus="focus('mainOdd1')" ng-blur="blur('mainOdd1')">
$scope.blur = function(propertyName){
$scope.data[propertyName] = func($scope.data[propertyName]);
}
关于javascript - 从回调函数更改模型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332713/