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 演示。