为什么会出现默认值?我以为它只是应该将一个元素绑定到一个scope属性。我没有意识到它与预填充有任何关系。为什么第一个文本框预先填充在这里,而不是第二个?
... JS
angular.module('epfApp', [])
.controller('MainCtrl', function ($scope, $window) {
$scope.questions = {
'1': {
'title': 'Why does a default value work here?',
'type': 'text',
'default': 'first question'
}
};
$scope.myChange = function() {
console.log("a change just occurred");
};
});
HTML ...
<div ng-controller="MainCtrl">
<label ng-repeat="question in questions">
{{question.title}}
<input type="text" ng-model="question.default" ng-change="change()" />
<br />
</label>
<br />
<label>
Why does a default value NOT work here:
<input type="text" ng-model="banana" ng-change="change()" />
<br />
</label>
</div>
编辑:我很感激答案。我认为这是转发器让我失望。对于每个元素,ng模型值是否必须是唯一的?我知道这是错的,但我觉得我需要'ng-model =“question.default {{$ index}}”'或某些东西来强制分配给ng-model的东西是唯一的。
编辑2: 我认为指令的工作是修改DOM。查看源代码后,我看到dom已被修改,添加了各种类和注释,但ng-model值仍然相同(question.default),也就是说,它们仍然依赖于ng-repeat指令使它们独一无二。因此,ng-repeat似乎是一个例外,因为暗示了ng-model的唯一(索引)名称,但技术上并没有在DOM中实际反映出来?
更新http://jsfiddle.net/ubwa4jgs/
<div ng-controller="MainCtrl" class="ng-scope">
<!-- ngRepeat: question in questions --><label ng-repeat="question in questions" class="ng-scope ng-binding">Why does a default value work here?
<input type="text" ng-model="question.default" ng-change="myChange()" class="ng-pristine ng-valid">
<br>
</label><!-- end ngRepeat: question in questions --><label ng-repeat="question in questions" class="ng-scope ng-binding">Why does a default value work here too?
<input type="text" ng-model="question.default" ng-change="myChange()" class="ng-pristine ng-valid">
<br>
</label><!-- end ngRepeat: question in questions -->
<br>
<label>Why does a default value NOT work here:
<input type="text" ng-model="banana" ng-change="myChange()" class="ng-pristine ng-valid">
<br>
</label>
</div>
答案 0 :(得分:2)
因为没有$scope.banana
值。 Fiddle
angular.module('epfApp', [])
.controller('MainCtrl', function ($scope, $window) {
$scope.questions = {
'0': {
'title': 'Why does a default value work here?',
'type': 'text',
'default': 'first question'
}
};
$scope.banana = "yellow";
});
&#34;为什么会出现默认值?&#34; - AngularJS two-way Data Binding。
关于你的编辑,你应该有这样的东西:
<label ng-repeat="question in questions track by $index">
{{questions[$index].title}}
<input type="text" ng-model="questions[$index].value" ng-change="change()" /> {questions[$index].value}}
<br />
</label>
查看更新后的Fiddle并注意第一个问题现在是&#39; 0&#39;。
答案 1 :(得分:1)
嘿,这是一个非常简单的问题。
这是因为ng-model="question.default"
有价值: - '第一个问题'
但控制器中的香蕉模型ng-model =“banana”没有价值。
此处为您更新fiddle。