【发布时间】:2016-04-06 03:10:31
【问题描述】:
Angular 的新手,我有一个 ng-repeat,它显示多个输入框,每个输入框都应该有自己的 ng-model 名称,但是 ng-repeat 不会使用名称填充 ng-model,如果我尝试围绕它构建观察者 {{ }}(即 ng-model="{{data.id}}
我的 app.js:
angular.module('app', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.data = {
dataSet: null,
inputs: [
{id: 'data1', name: 'Option A', type:'input', preFill:"no.A"},
{id: 'data2', name: 'Option B', type:'input', preFill:"no.B"},
{id: 'data3', name: 'Option C', type:'input', preFill:"no.C"}
],
};
}]).directive('formPanel', function() {
return {
restrict: 'E',
scope: {
info: '='
},
template: '<div ng-controller="ExampleController"><form name="myForm">'+
'<label for="{{option.name}}" ng-repeat="option in data.inputs"><br />'+
'Input {{option.name}}:'+
'<input ng-model="option.id" id="{{option.id}}" name="{{option.name}}" '+
'type="{{option.type}}" class="form-control">'+
' </label></form><hr>'+
'<span>data: = {{ data1}} , {{data2}}, {{data3}}.</span><br/>'+
'</div>' };
});
})
和html:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-app="app" >
<form-panel info="data"></form-panel>
</body>
</html>
我在这个 Plunker 中试过:Plunker Link
如您所见,ng-model 未绑定(?),可能出于同样的原因,$scope 名称作为数据出现在输入中,而不是作为要绑定的数据的名称到。
即应该读为 ng-model="data1",但改为读为 ng-model="option.id"
【问题讨论】:
-
只是为了澄清,在模板中使用ng-Controller只是为了更容易在这里发布,而不是几个文件。预期的输出是data = no.A, no.B, no.C,其中数据来自3个输入框。
-
所以,在阅读了有关 track by、$compile、$link.. 之后似乎都没有直接解决我的问题,但表明我只是不理解它.. 我不得不手动写出“
标签: javascript angularjs input ng-repeat angularjs-ng-model