角度 - 从作用域变量中获取 ng 模型名称

angular- get ng-model name from scope var

本文关键字:ng 模型 获取 作用域 变量 角度      更新时间:2023-09-26

有什么办法可以做到的吗?

  ng-model="{{att.myModel}}"

我有一个名为AllSmallText的数组,其中包含项目。我想在AllSmallText上使用ng-repeat构建表单,并将ng-model值设置为myModel,这是项目字段之一。

   <div ng-repeat="att in AllSmallText" class="col-xs-6 col-md-6">
           <input class="form-control" name="firstname" placeholder="{{att.title}}"  type="text"
              ng-model="{{att.myModel}}"
              required autofocus />
   </div>

谢谢

您不需要大括号,请使用ng-model='attr.myModel' .

更新的答案

ngModel将尝试通过计算当前范围内的表达式来绑定到给定的属性。如果此范围内尚不存在该属性,则将隐式创建该属性并将其添加到该范围。

添加新范围,

$scope.myForm = {};

并使用ng-model="myForm[attr.myModel]",这将创建一个新的范围属性,例如$scope.myForm.hello

希望这有帮助。

如果有人以这种方式查找任何内容,您可以使用以下语法:

而不是ng-model="{{att.myModel}}" 使用ng-model="[att.myModel]"

有一种方法可以解决这个问题,那就是通过另一个指令添加ng-model指令。

您可以在标记中包含添加模型指令:

<input type="text" add-model="{{myModel}}" />

然后在指令中添加 ng 模型:

myApp.directive('addModel', function($compile) {
    return {
        restrict: 'A',
        link: function(scope, element, attrs, ctrl) {
            var model = attrs.addModel;
            element.attr('ng-model',  model);
            element.removeAttr('add-model');  // avoid infinite loop
            $compile(element)(scope);
        }
    };
});

小提琴:http://jsfiddle.net/oligustafsson/wuqqxtqu/