簡體   English   中英

如何使用動態變量成角度

[英]How to use dynamic variable into angular

我有一個要輸入的表單,根據該表單創建了多個輸入框。 為此,下面給出了javascript代碼。

for(i = 1; i <= c; i++) { //c = total input count
    block = block + '<div class="row">'+
            '<div class="form-group col-lg-12">'+
                '<input id="name" ng-model="new.var'+i+'name" type="text" class="form-control">'+
                '<input id="type" ng-model="new.var'+i+'type" type="text" class="form-control">'+
            '</div>'+
            '</div>';
}
document.getElementById("vars").innerHTML = block;

上面的代碼工作正常,並且ng-model正在動態生成,例如new.var1name , new.var1type , new.var2name , new.var2type等。

但是如何在我的控制器中獲取這些變量? 如果我像下面那樣在控制器中生成這些變量,則其給出錯誤,即找不到“名稱”。

var var1 = [];
for(i = 1; i <= c; i++) { //c = total input count
    var item = {};
    console.log('var'+i+'name', 'var'+i+'unit');
    item['name'] = $scope.new.var+i+name;
    item['type'] = $scope.new.var+i+type;
    var1.push(item);
} 
console.log(JSON.stringify(var1));

所以我用下面的方式,但是現在沒有錯誤,但是var1為空。

var var1 = [];
for(i = 1; i <= c; i++) {
    var item = {};
    console.log('var'+i+'name', 'var'+i+'type');
    item['name'] = $scope.new['var'+i+'name'];
    item['type'] = $scope.new['var'+i+'type'];
    var1.push(item);
}
console.log(JSON.stringify(var1));

請任何人幫助我找出我在做錯什么,或者有可能做嗎???

我建議不要在控制器中生成html,而應在視圖中編寫該html,並使用angular的ng-repeat指令重復它: https : //docs.angularjs.org/api/ng/directive/ngRepeat 像這樣的東西(未經測試):

<div ng-repeat="item in c track by $index">
    <input id="name" ng-model="name[$index]" type="text" class="form-control">
    <input id="type" ng-model="type[$index]" type="text" class="form-control">
</div>

然后,您應該能夠從控制器中的$ scope訪問名稱和類型數組。 如果“ c”是原始輸入的ng模型(定義重復的次數),那么如果這是所需的功能,則應該動態添加新字段。

EDITED

在您的控制器中

$scope.c = 5;
$scope.getNumber = function(num) {
  return new Array(num);   
}

在你看來

<div ng-repeat="i in getNumber(c) track by $index">
    <input id="name" ng-model="name[$index]" type="text" class="form-control">
    <input id="type" ng-model="type[$index]" type="text" class="form-control">
</div>

使用$scope['new.var'+i+'name']

有兩種方法可以訪問JavaScript中的對象屬性:

  1. 如果知道名稱,可以執行$scope.new.var1name
  2. 如果名稱是動態的(這是您的情況),則可以使用括號語法$scope['new.var'+i+'name']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM