:
$scope.foo = new Foo('test'); // foo.property now 'test'
在我的视图中
<input type="text" ng-model="foo.property" />
但我真的不希望直接更改foo.property。 我希望通过为它调用'set method'来改变它,比如
foo.setProperty('new-value');
所以我知道我可以用手表这样做:
$scope.$watch('myObject.property', function(newValue,oldValue) {
myObject.setProperty(newValue);
}
但是我会再次遇到这种情况,所以我的问题是我是否可以为每个Foo更自动地做这件事?
或:如何在Angular中最好地实现某些内容,以便每次使用someFoo.property作为ng-model时,都会通过调用someFoo.setProperty(newValue)来更改?
答案 0 :(得分:1)
您可以在模糊事件上调用setter方法:
<input type type="text" ng-model="data.property" ng-blur="foo.setProperty(data.property)">
或使用ng-change =&#34; foo.setProperty(data.property)&#34;
答案 1 :(得分:0)
你基本上希望foo.property模型不会因用户交互而改变,是吗?为什么不使用HTML disable
输入框,这将确保没有用户交互改变输入值,然后使用$ watch? $ watch是处理您需要的完美方式。只要它不是deep watch
,就没有性能问题。