根据https://github.com/angular/angular.js/wiki/Understanding-Scopes的说法,尝试将数据绑定到附加到您的基本体上是一个问题$scope:
范围继承通常是简单明了的,并且您通常甚至不需要知道它正在发生...直到您尝试将2路数据绑定(即表单元素,ng-model)绑定到基元(例如,数字,字符串,布尔值)从子作用域内部在父作用域上定义。它不能像大多数人期望的那样工作。
建议是
通过遵循始终具有“'”的“最佳实践”,可以很容易地避免使用基元出现此问题。在您的ng模型中
现在,我有一个非常简单的设置,它违反了以下规则:
HTML:
<input type="text" ng-model="theText" />
<button ng-disabled="shouldDisable()">Button</button>
JS:
function MyController($scope) {
$scope.theText = "";
$scope.shouldDisable = function () {
return $scope.theText.length >= 2;
};
}
这真的不好吗?当我开始尝试以某种方式使用子范围时,这是否会以某种可怕的方式将我搞砸?
我需要将其更改为类似
function MyController($scope) {
$scope.theText = { value: "" };
$scope.shouldDisable = function () {
return $scope.theText.value.length >= 2;
};
}
和
<input type="text" ng-model="theText.value" />
<button ng-disabled="shouldDisable()">Button</button>
这样我才能遵循最佳做法?您能给我一个具体的例子吗,后者将使我免于前者带来的可怕后果?
浮云间
江户川乱折腾
相关分类