經過相當多的搜索和試驗後,我發現我可以使用directive
的controller
將函數添加到scope
。
.directive('wrapped', function() {
return {
controller: function($scope) {
$scope.wrapper = function(prop) {
// turns signal into getterSetter
return function(newVal) {
if (angular.isDefined(newVal)) {
prop.setValue(newVal);
}
return prop.getValue();
}
}
},
scope : {
model : '&'
},
templateUrl : 'template.html',
}
})
然後可以在模板中的表達式中使用範圍中的函數。
<p class="field {{model().status().isValid() ? 'valid' : 'invalid'}}">
<span class="label">{{label}}:</span>
<input type="text" ng-model="wrap(model())" ng-model-options="{getterSetter: true}" ></input>
</p>
我很想聽聽更有經驗的AngularJS程序員,如果有更習慣的方式來寫這個。
附加功能的原型作品,但它不是我正在尋找。每個可觀察屬性都有一個單獨的對象,並且其中許多對象具有唯一類,例如用於計算屬性。我可以將它添加到Object.prototype中,但這非常殘酷。 –
添加包裝正是我想要在該功能中執行的操作。如果我提前包裝每個屬性對象,我還需要重新創建結構。 –