如何处理Angular中的对象属性更改?

时间:2014-09-05 14:01:30

标签: javascript angularjs bind

我有idname这样的对象:

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

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

我使用角色,我在html中有这样的东西:

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

使用此代码,我可以将id绑定到input,但text不会更改。我需要使用&#39; ng-change&#39;跟踪对象ID更改。但我相信这应该是一种使角色自动化的方法。

所以,我的问题是&#34;是否可以将对象属性的更改绑定到没有ng-change的函数调用?&#34;

P.S。我有一系列这样的对象,所以我不想使用$scope.$watch():)

1 个答案:

答案 0 :(得分:3)

使用getter在其上定义属性。

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

阅读有关Object.defineProperty的更多信息,请访问此doc