javascript - 从回调函数更改模型值

标签 javascript angularjs ionic-framework

我有以下输入

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

相关文章:

javascript - 检查音频文件是否正在播放?

javascript - 如何创建在 document.write 中存活的 JS 事件监听器?

javascript - 将 AngularJS 与 KineticJS 一起使用

angular - 递归 Angular 2 HTML 绑定(bind)

ios - 在 iOS 上运行 ionic 3 时出错

javascript - ionic 条形码扫描器时间戳集成

javascript - 正则表达式:为什么我在结果中得到空字符串

javascript - 在 Javascript 中转换 UTC 日期的替代方案?

javascript - 重置作为参数传递的 select 的值

javascript - 我可以在 AngularJS 的指令声明中连接吗?