Angularjs - 如何'ng-repeat'一个div为'ng-model'时代的值?

Suj*_*rni 9 html javascript angularjs

使用Angularjs,<div>如果用户在文本框中输入"10" ,我想创建say 10 .

<input type="text" id="gcols" placeholder="Number of Columns" ng-model="cols"/>
Run Code Online (Sandbox Code Playgroud)

因此,无论用户在此框中输入什么值,都应创建许多值.所以我的一般性问题是,如何'ng-repeat' <div>为'ng-model'时代?

更新: 感谢您的所有答案,我通过引用您的答案做了类似的事情.这是现在的工作,但告诉我,是否有任何其他逻辑比这更有效.

$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);
        };
Run Code Online (Sandbox Code Playgroud)

Alb*_*orz 12

您需要创建一个数组来迭代它.在你的控制器中:

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);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

在你看来:

<div ng-controller="ctrl">
    <input ng-model="cols" type="text" ng-change="makeArray()" />
    <div ng-repeat="o in arr">hi</div>
</div>
Run Code Online (Sandbox Code Playgroud)

的jsfiddle


Rob*_*ick 6

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

在您的模块/ app/controller中

$scope.cols =4; /* a default */
$scope.divs =[]; /* whatever these are */
Run Code Online (Sandbox Code Playgroud)

在模板中

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

  <div ng-repeat="div in divs | limitTo:cols" >
    ... 
  </div>
Run Code Online (Sandbox Code Playgroud)

作为评论问题,试试这个:

在控制器中

  $scope.cols
Run Code Online (Sandbox Code Playgroud)

在模板中

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

 <h3>cols: {{cols}} </h3>
Run Code Online (Sandbox Code Playgroud)

您在键入时是否看到页面上的值发生了变化?如果不是,您的$ scope.cols不在模板范围内.