使用Angularjs,如果用户在文本框中输入“10”,我想创建例如10 因此,无论用户在此框中输入什么值,都将创建这些值。因此,我的概括问题是,如何为'ng-model'多次'ng-repeat'一个 更新:感谢你所有的回答,我做了一些类似的事情,通过参考你的回答。从目前来看,这是可行的,但请告诉我,是否还有其他比这更有效的逻辑。
您需要创建一个数组来迭代它。在您的控制器中: 在你看来: JSFiddle
演示:http://jsfiddle.net/jsfuw/ 在您的模块/app/controller中 在模板中 作为注释问题,请尝试以下操作: 在控制器中 在模板中 键入时是否看到页面上值更改?如果不是,则您的$scope.cols不在模板作用域中。
在你看来: 在您的控制器中: 或者,你也可以滚动你自己的指令,它使用转离重复多次,但是这可能会涉及到并且可能不会让你得到太多。<input type="text" id="gcols" placeholder="Number of Columns" ng-model="cols"/>
$scope.divs = new Array();
$scope.create=function(){ //I added a button & invoked this function on its ng-click
var a = $scope.cols;
for(i=0;i<a;i++)
{
$scope.divs.push(a);
}
alert($scope.divs);
};
共3个答案
app.controller('ctrl', function ($scope) {
$scope.cols = 0;
$scope.arr = [];
$scope.makeArray = function () {
$scope.arr.length = 0;
for (var i = 0; i < parseInt($scope.cols) ; i++) {
$scope.arr.push(i);
}
}
});
<div ng-controller="ctrl">
<input ng-model="cols" type="text" ng-change="makeArray()" />
<div ng-repeat="o in arr">hi</div>
</div>
$scope.cols =4; /* a default */
$scope.divs =[]; /* whatever these are */
<input type="text" id="gcols" placeholder="Number of Columns" ng-model="cols"/>
<div ng-repeat="div in divs | limitTo:cols" >
...
</div>
$scope.cols
<input type="text" id="gcols" placeholder="Number of Columns" ng-model="cols"/>
<h3>cols: {{cols}} </h3>
<input ng-model="cols" ng-change="colsChanged()"/>
<div ng-repeat="item in items track by $index">{{$index}} {{item}}</div>
app.controller('MyCtrl', function($scope) {
$scope.cols = 0;
$scope.colsChanged = function () {
$scope.items = new Array(+$scope.cols);
};
//optional: if you're starting with 1 or more "cols"
$scope.colsChanged();
});