【发布时间】:2015-10-10 06:52:41
【问题描述】:
如何在 Angular 中以高效的方式强制执行只读属性?
控制器:
function MyCtrl($scope) {
$scope.clickCount = 0;
$scope.incrementCount = function() {
$scope.clickCount = $scope.clickCount + 1;
}
}
查看:
<div ng-controller="MyCtrl">
Clicked {{clickCount}} times
<button ng-click="incrementCount()">Doober</button>
<input type="text" ng-model="clickCount" /><!-- how do I prevent this -->
</div>
我知道我可以将 clickCount 设为 getter 函数 getClickCount(),但这会降低性能吗,因为 Angular 必须在每个摘要循环中调用此函数?
更新
我正在寻找一种方法来明确不应该直接更改只读属性,而是通过提供的函数来更改。此外,防止视图直接更改属性。
【问题讨论】:
-
你想完成什么?只是显示 clickCount 的值而不允许用户编辑它?
-
ngReadonly 怎么样? docs.angularjs.org/api/ng/directive/ngReadonly
-
为什么你没有想到 angular 1.3+ 的 bindonce 指令
-
我正在控制器中寻找一种方法,以明确
clickCount不应直接更改,而应通过函数影响。 -
你量过吗?如果一个简单的函数真的会影响性能,那么这个函数将是你最小的问题。此外,您只需将输入设置为只读。
标签: angularjs