【问题标题】:Angular - Dynamic ng-model name with id in ng-repeatAngular - 在 ng-repeat 中带有 id 的动态 ng-model 名称
【发布时间】:2016-03-22 21:32:52
【问题描述】:

这是我的控制器:

$scope.inputs = [];
$scope.addInput = function () {
    $scope.inputs.push({
        id: $scope.inputs.length + 1,
    });

};
$scope.removeInput = function (index) {
    $scope.inputs.splice(index, 1);
};

我尝试了这种方法但没有奏效:

<div ng-repeat="input in inputs">
      <textarea   id="activity"
                  name="project_budget_administration[<% input.id %>][activity]"
                  placeholder="Activity"
                  ng-model="project_budget_administration.activity_<% input.id %>"
                  ng-maxlength="100"
                  required></textarea>
</div>

对于 textarea 的 name 属性完美,但对于 ng-model - 不是。 我也尝试使用这种语法 ng-model="project_budget_administration.activity[input.id]" 而不是 input.id 我尝试了 $index,但也不起作用。

【问题讨论】:

  • 你的语法没有意义。 &lt;% %&gt; 不是有效的角度标签,我不明白为什么 $indexitem 会起作用——因为它们没有定义?
  • 你可以设置任何你想要的标签,所以我选择这个“”
  • 应该是ng-model="project_budget_administration.activity[input.id]"
  • 只是一个好习惯:你有多个textarea相同的id,使用一个类,会更好。

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


【解决方案1】:

您可以使用 javascript 表达式来动态命名 ng-model

<div ng-repeat="input in inputs">
  <textarea   id="activity"
              name="project_budget_administration[<% input.id %>][activity]"
              placeholder="Activity"
              ng-model="project_budget_administration['activity_' + input.id]"
              ng-maxlength="100"
              required></textarea>

从不同的答案 - http://jsfiddle.net/DrQ77/ - How can I set a dynamic model name in AngularJS?

【讨论】:

  • 不,当我检查元素时不起作用,它显示为纯文本:"ng-model="project_budget_administration['activity_' + input.id]"
  • 如果您登录 `{{project_budget_administration}},您会看到谁,您应该在该模型上看到一个 activity_1 字段,例如(取决于 id)以及您输入到 textarea 中的数据。跨度>
  • "project_budget_administration" 这只是我随便起的名字
  • jsfiddle.net/DrQ77/564 - 这个小提琴显示了动态 ng-model 的工作,需要你在它不工作的地方提供一个小提琴。
猜你喜欢
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多