提问者:小点点

Angularjs-如何为“value in ng-model”-times“ng-repeat”一个div?


使用Angularjs,如果用户在文本框中输入“10”,我想创建例如10

<input type="text" id="gcols" placeholder="Number of Columns" ng-model="cols"/>

因此,无论用户在此框中输入什么值,都将创建这些值。因此,我的概括问题是,如何为'ng-model'多次'ng-repeat'一个

更新:感谢你所有的回答,我做了一些类似的事情,通过参考你的回答。从目前来看,这是可行的,但请告诉我,是否还有其他比这更有效的逻辑。

$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>

JSFiddle

匿名用户

演示:http://jsfiddle.net/jsfuw/

在您的模块/app/controller中

$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>

键入时是否看到页面上值更改?如果不是,则您的$scope.cols不在模板作用域中。

匿名用户

在你看来:

<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();
});

或者,你也可以滚动你自己的指令,它使用转离重复多次,但是这可能会涉及到并且可能不会让你得到太多。