2014-08-27 89 views
-1

问题 -在AngularJS创建NG-模型动态名

ng-model没有动态创建。我的输入框正在动态创建,我正在尝试创建ng-model动态,如test[1],test[2]等,但当我使用firebug时,我只能获得 - test[shiftnumber]的所有输入元素。

HTML代码 -

<body ng-controller="myCtrl"> 
    <select id="shiftnumbers" 
      ng-model="event.shiftnumber" 
      ng-change="addShiftNumber(event.shiftnumber)" 
      ng-options="timeslot.value as timeslot.name for timeslot in shiftnumbers" 
      ng-init="event.shiftnumber = shiftnumbers[0].value" 
      class="btn"> 
    </select> 
    <div ng-repeat="shiftnumber in selectedShiftnumbers"> 
     <input type="text" name="test{{shiftnumber}}" ng-model="test[shiftnumber]" /> {{shiftnumber + 1}} 
    </div> 
</body> 

脚本代码 -

var myApp = angular.module("myApp", []); 

myApp.controller("myCtrl", function($scope){ 

    $scope.shiftnumbers = []; 
    for(var i=0; i< 23; i++) { 
     $scope.shiftnumbers.push({name: i, value: i}); 
    } 

    $scope.addShiftNumber = function(num){ 
     $scope.selectedShiftnumbers = []; 
     for(var i=0; i< num; i++) { 
     $scope.selectedShiftnumbers.push(i); 
     } 
    } 
}); 

PLNKR - http://plnkr.co/edit/PL9sVAKn5UsZECPsOvnk?p=preview

回答

3

因为你没有定义$scope.test[0]$scope.test[1](你使用ng-model="test[shiftnumber]",所以t这里应该是$scope.test[shiftnumber])。

尝试

$scope.addShiftNumber = function(num){ 
    $scope.test = []; 
    $scope.selectedShiftnumbers = []; 
    for(var i=0; i< num; i++) { 
    $scope.selectedShiftnumbers.push(i); 
    $scope.test.push(''); 
    } 
} 

plunker