AngularJS中的动态ng模型名称

时间:2016-05-26 10:02:50

标签: javascript angularjs

我遇到动态生成的输入问题。 我怎样才能获得他们的价值观?

<p ng-repeat="(key, value) in selectedTemplate.attributes.Params.attributes">
    {{key}} : <tr><input ng-model="params[key]" type="text" placeholder="{{value}}" >
</p>

//attributes are like this
"attributes": {
    "End Date": "java.sql.Timestamp",
    "Containers": "java.lang.Object",
    "Begin Date": "java.sql.Timestamp"
}

感谢。

3 个答案:

答案 0 :(得分:1)

只需在控制器中声明$scope.params = {}即可。 之后您可以通过以下方式访问这些值: $scope.params['End Date']$scope.params['Containers']$scope.params['Begin Date']

答案 1 :(得分:0)

你的第一个问题是在ng-repeat范围内创建params。因此,您需要在控制器初始化中声明它:

$scope.params = [];

然后,要遍历变量,您可以在控制器中执行以下操作:

for (var key in attributes) {
  if (attributes.hasOwnProperty(key)) {
    alert($scope.params[key]);
  }
}

顺便说一句,params是一个保留的关键字。在某些浏览器中使用它可能会失败。

答案 2 :(得分:0)

我有一个演示版:Here

我使用ng-model名称创建简单示例,按照它并申请你的案例。

HTML:

<p ng-repeat="(key, value) in attributes track by $index">
   <input ng-model="params[key]" type="text" placeholder="{{value}}" >
</p>

<p>{{params}}</p>

控制器:

$scope.attributes = {
    "End Date": "java.sql.Timestamp",
    "Containers": "java.lang.Object",
    "Begin Date": "java.sql.Timestamp"
 };

 // You should create params variable.
 $scope.params = {};