我有一个idname这样的对象:

function format(id){
  return '(' + id + ')';
}

function MyObject(id){
  this.id = id;
  this.text = format(id);
}


我正在使用angular,并且在html中有类似的内容:

<input ng-model="myObject.id" type="text">{{myObject.text}}


使用此代码,我可以将id绑定到input,但是text不会被更改。我需要使用“ ng-change”来跟踪对象ID的变化。但是我相信这应该是使该过程自动进行成角度的方法。

因此,我的问题是“是否可以在没有ng-change的情况下将对象属性的更改绑定到函数调用?”

附言而且我有一个这样的对象数组,所以我不想使用$scope.$watch() :)

最佳答案

用getter定义一个属性。

function MyObject(id){
    this.id = id;
    Object.defineProperty(this, 'text', {
        get: function () { return '(' + this.id + ')'; }
    });
}


要了解有关Object.defineProperty的更多信息,请访问此doc

关于javascript - 如何处理Angular中的对象属性更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25687699/

10-10 21:01
查看更多