2014-12-19 65 views
1

我對angular js非常陌生。動態ng模型值不適用於雙向數據綁定

我使用動態字段。還有我需要創建動態NG-模型值類似領域lable.LabelID]這裏lable.LabelID是動態值

,這是我的模板頁面創建的形式

<form ng-submit="" ng-controller="saveOrder"> 
    <table class="col-xs-12 col-sm-8 col-sm-offset-4"> 
    <tr ng-repeat="lable in Grp.Label"> 
     <td style="width:30%" class="no-wrap text-left col-xs-text-center text-primary"> 
     <h4>{{lable.LabelName}}</h4> 
     </td> 
     <td style="width:60%" class="no-wrap text-left"> 
      <input type="{{input_type[lable.InputType]}}" 
      name="{{lable.LabelID}}" ng-model="Field[lable.LabelID]" 
      ng-init="Field[lable.LabelID] = Field[lable.LabelID] || {}"/> 
     </td> 
    </tr> 
</table> 

和我的控制器就像是

productApp.controller('saveOrder',function($scope,$http) 
{ 
    $scope.FieldOptions = {}; 
    $scope.createOrder = function() 
    { 
     alert("in"); 
     console.log($scope); 
     console.log($scope.Field[1]); 
     console.log($scope.FieldOptions); 
    } 

}); 

我服務器數據會像

{ 
    "GroupName": "Order Form", 
    "Label": [ 
    { 
     "InputType": "1", 
     "LabelID": "1", 
     "LabelName": "BillingDetails" 
    }, 
    { 
     "InputType": "1", 
     "LabelID": "2", 
     "LabelName": "shipping Details" 
    } 
    ] 
} 

對於場景我得到錯誤,如

TypeError: Cannot set property '1' of undefined 

at Function.v.assign (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:73:162) 
at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:72:33 
at Object.e.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:88:347) 
at pre (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:145:309) 
at i (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:43:396) 
at e (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:39:307) 
at e (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:39:324) 
at e (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:39:324) 
at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:38:372 
at Object.<anonymous> (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js:148:122) <input type="{{input_type[lable.InputType]}}" name="{{lable.LabelID}}" ng-model="Field[lable.LabelID]" ng-init="Field[lable.LabelID] = Field[lable.LabelID] || {}" class="ng-pristine ng-valid"> 

這些類型的問題,我發現很多這樣。但我無法爲我的方案找出解決方案。請幫我解決這個問題...

任何類型的幫助是可觀的。

+0

你在哪裏設置你的Grp.Label? – mfrachet 2014-12-19 06:47:53

+0

我收到來自服務器調用所有這些數據,如以這種形式{ 「組名」:「訂單式」, 「標籤」: { 「的inputType」:「1」, 「LabelID」:「1」 , 「標籤」: 「BillingDetails」 }, { 「的inputType」: 「1」, 「LabelID」: 「2」, 「標籤」: 「送貨細節」 } ] } – venkatesh 2014-12-19 06:51:27

+1

你有沒有嘗試在控制器中設置'$ scope.Field = [];'並刪除ng-init指令? – 2014-12-19 07:04:52

回答

1

嘗試在控制器內設置$scope.Field = [];並刪除ng-init指令。在您當前的代碼中,編譯發生時$scope.Field正在變得未定義。