AngularJS:将动态创建的控件绑定到模型
AnguarJS: Bind dynamically created controls to model
我需要根据用户的输入动态创建一个 GUI。一个用例是,用户输入标题 he/she 想要在生成的报告中出现的数量。因此,我通过 ng-repeat 渲染输入控件,效果很好。在那些呈现的输入标签中,必须可以输入报告的标题。
唯一的问题是我不知道如何将文本框的输入绑定到模型,因为每次输入控件的数量都不同。
观点:
<div ng-app>
<div ng-controller="Controller">
<input type="number" ng-model="numberOfCtrls"/>
<div ng-repeat="i in getTimes(numberOfCtrls) track by $index">
<input type="text" style="width:100px;" />
</div>
</div>
</div>
控制者:
function Controller($scope){
$scope.numberOfCtrls = 0;
$scope.tempNumber = 0;
$scope.getTimes = function(number){
return new Array(number);
};
}
见http://jsfiddle.net/5dzvnbtt/
提前致谢
您可以使用所需数量的标题填充变量 objects。
这是一个例子:
$scope.headlines = [];
$scope.$watch('numberOfHeadlines', function() {
$scope.headlines = [];
if ($scope.numberOfHeadlines !== undefined) {
for (i = 0; i < $scope.numberOfHeadlines; i++) {
$scope.headlines.push({ title: '' });
};
}
});
和模板:
<select ng-model="numberOfHeadlines">
<option value="">Choose headlines</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div ng-repeat="headline in headlines">
Headline {{ $index + 1 }} is: {{ headline.title }}
<br />
<input type="text" ng-model="headline.title">
<hr />
</div>
还有一个 JSFiddle 演示。
我需要根据用户的输入动态创建一个 GUI。一个用例是,用户输入标题 he/she 想要在生成的报告中出现的数量。因此,我通过 ng-repeat 渲染输入控件,效果很好。在那些呈现的输入标签中,必须可以输入报告的标题。
唯一的问题是我不知道如何将文本框的输入绑定到模型,因为每次输入控件的数量都不同。
观点:
<div ng-app>
<div ng-controller="Controller">
<input type="number" ng-model="numberOfCtrls"/>
<div ng-repeat="i in getTimes(numberOfCtrls) track by $index">
<input type="text" style="width:100px;" />
</div>
</div>
</div>
控制者:
function Controller($scope){
$scope.numberOfCtrls = 0;
$scope.tempNumber = 0;
$scope.getTimes = function(number){
return new Array(number);
};
}
见http://jsfiddle.net/5dzvnbtt/
提前致谢
您可以使用所需数量的标题填充变量 objects。
这是一个例子:
$scope.headlines = [];
$scope.$watch('numberOfHeadlines', function() {
$scope.headlines = [];
if ($scope.numberOfHeadlines !== undefined) {
for (i = 0; i < $scope.numberOfHeadlines; i++) {
$scope.headlines.push({ title: '' });
};
}
});
和模板:
<select ng-model="numberOfHeadlines">
<option value="">Choose headlines</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<div ng-repeat="headline in headlines">
Headline {{ $index + 1 }} is: {{ headline.title }}
<br />
<input type="text" ng-model="headline.title">
<hr />
</div>
还有一个 JSFiddle 演示。