将ng-model值动态设置为AngularJS中js变量的值

时间:2015-07-08 18:32:50

标签: javascript angularjs angular-ngmodel angularjs-ng-model

以前有人问过类似的问题,我已经尝试过给他们的解决方案,但我的问题却没有什么不同。

假设我的控制器中有一系列像这样的对象

$scope.objArray = [
  {
    id:1,
    name:"placeholder1"
  },
  {
    id:2,
    name:"placeholder2"
  }
];

现在基于这个数组,我正在生成一个像这样的动态表单

  <div ng-repeat="field in fields">
    {{field.field_name}} </br>
    <input type="text" ng-model="field.field_name"><br>
  </div>

此处以此形式,我希望将ng-model值设置为placeholder1placeholder2,而不是像javascript这样的field.field_name变量,因为我的目标即将到来来自另一个包含html的来源。

<p>this is sample html {{placeholder1}}. again sample html {{placeholder2}} </p>

我这里没有这些JS变量。到目前为止,我找不到任何能够以这种方式工作的解决方案。

这里是plunk的链接: http://plnkr.co/edit/ttaq0l3PDRu4piwSluUX?p=preview

1 个答案:

答案 0 :(得分:2)

在您的情况下,它将如下所示:

<div ng-repeat="field in fields">
    {{field.field_name}}
    <br>
    <input type="text" ng-model="$parent[field.field_name]">
    <br>
</div>

请注意,您必须使用$parent引用,因为在您的情况下您要设置外部作用域的属性(其中定义了objArray),但是ngRepeat创建了每个子作用域的子作用域迭代,所以你需要一步。

演示: http://plnkr.co/edit/35hEihmxTdUs6IofHJHn?p=info