【问题标题】:Updating object property in angular with dynamic variable使用动态变量以角度更新对象属性
【发布时间】:2018-02-02 21:01:14
【问题描述】:

我可能缺少 Angular 渲染和赋值的一些关键组件,但我认为当一个变量在控制器范围内更新时,它影响的任何区域都会重新评估。但是,在这种简单的情况下它似乎不起作用

var myApp = angular.module('myApp',[]);


function MyCtrl($scope) {
    $scope.name = 'Superhero';

    $scope.specialObject = {
        whoawhat: $scope.name
    }
}

http://jsfiddle.net/ADukg/14138/

我希望在我更改“名称”时更新“specialObject.whoawhat”,并且我也尝试过使用函数。如何触发对象属性的更新?

【问题讨论】:

  • 有没有直接绑定到对象的原因?
  • 格式化问题,我必须在数据准备好存储在该属性中之前对数据执行一些额外的功能
  • 你不能直接绑定它,然后在对象上执行额外的功能吗?
  • 技术上是的,我可以调用 onChange 来触发一个操作数据的函数,但如果我要这样做,我不妨用数据设置变量。如果可能的话,希望不这样做。
  • 好吧,您当前的情况是尝试通过继承直接绑定到对象,这就像直接绑定一样。进行对象更新与直接绑定到它没有什么不同。我将在下面提供答案。让我知道它是否满足您的需求。

标签: javascript angularjs


【解决方案1】:

这是一个可以实现这一目标的示例。

代码:

<input type="text" ng-model="name" ng-change="update()">

var myApp = angular.module('myApp',[]);

//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});

function MyCtrl($scope) {
   $scope.name = 'Superhero';

   $scope.specialObject = {
       whoawhat: $scope.name
   }

   $scope.update = function(){ //bind this to change

       //do whatever logic you need to do here before updating the object
       $scope.specialObject.whoawhat = $scope.name
   }
}

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 2021-10-25
    相关资源
    最近更新 更多