使用{{expression}}动态创建ng模型不起作用?

时间:2014-01-11 10:49:46

标签: javascript angularjs angularjs-model

我正在开展一个角度项目,我需要根据一系列问题创建一个表单。我想为数组中的每个问题创建ng-model

所以我想出了类似下面的内容,但它没有用。

<div class="form-group" data-ng-repeat="question in questions">
    <label for="{{question.label}}" class="col-md-2 control-label">
        {{question.label}}:
    </label>
    <div class="col-md-10">
        <input type="text" 
               class="form-control" 
               name="{{question.label}}" 
               data-ng-model={{question.label}}
               required />
        <span class="error"
              data-ng-show="formQuickView.{{question.label}}.$error.required">
            Required!
        </span>
    </div>
</div>                   

有人可以帮我解决这个问题吗? 非常感谢你们。

2 个答案:

答案 0 :(得分:7)

formQuickView[question.label].$error.required

这是常规的JavaScript语法。您希望使用formQuickView定义的名称访问question.label的媒体资源。

<强>更新

不知怎的,我错过了主要观点,即ng-model表达式。基本上你在这里做同样的事情。你有两个选择(技术上只有一个):

  • 将对象添加到您的范围,例如questions,然后使用questions[question.label]
  • 当您有表单时,请为其命名并自动添加对象。例如。 <form name="questions" ....和上面一样。

答案 1 :(得分:4)

ng-model不能与{{}}一起使用,它认为传递给它的字符串是一个引用范围属性的表达式。

我不确定我是否正确理解了您的代码。在您的代码中,我认为data-ng-model="question.label"应该有用。

如果您想引用label字段中指定的动态字段。尝试使用ng-model:

<input type="text" ng-model="question[question.label]"/>

DEMO