使用AngularJS指令,如何将自定义模型从一个指令传递到另一个指令?

马特·卡夏特

背景

我正在构建自定义表单构建指令。是的,我知道已经有很多人了,谢谢。

ngModel在指令中使用from,我遍历了表单的控制对象的JSON数组:

$scope.myForm.controls = [{label: "foo", controlType: "input"}, {label: "bar", controlType: "checkbox"}];

从那里开始,计划是$compile针对每个表单控件使用单独的指令。

这是主要的指令(可以正常工作):

app.directive('myDynamicForm', ['$compile', function ($compile) {
           
    return {
        restrict: 'E', // supports using directive as element only
        scope: {
            ngModel: "="
        },
        replace: true,
        link: function (scope, element, attrs) {

            angular.forEach(scope.ngModel, function (model) {

                var el = "";

              switch (model.controlType.toLowerCase()) {
              case "input":
                  el = "<my-input ng-model='model'></my-input>";
                  break;
                  default:
                      break;
                }
              
                $compile(el)(scope);
                element.append(el);
            });
      }
    };
}])

用法如下:

<my-dynamic-form ng-model="myForm.controls"></my-dynamic-form>

同样,这部分工作正常。

问题

当我创建这些基于指令的新元素时,我需要将其传递给它们(作为其ng-model),以便forEach在主指令循环中迭代特定对象

因此,这是一个示例控制指令:

directive('myInput', ['$compile', function ($compile) {
   return {
        restrict: 'E',
        scope: {
            ngModel: "="
        },
        replace: true,
        templateUrl: "/templates/input.html",
        link: function (scope, element) {

            var obj = scope.ngModel; //<==SHOULD BE SAME AS "model" IN THE FORM BUILDING DIRECTIVE!!
        }
    };
}])

用法:

<myInput ng-model="[model from parent form building directive]"></myInput>

现在,如果我将子指令的ng-model设置为,则会<my-input ng-model='ngModel'></my-input>得到与父指令相同的集合。

如果我将其设置为“样板”<my-input ng-model='model'></my-input>我得到undefined的子指令的值。

任何帮助表示赞赏。

叶夫根·萨夫罗诺夫(Yevgen Safronov)

尝试按索引访问子模型:

app.directive('myDynamicForm', ['$compile', function ($compile) {

return {
    restrict: 'E', // supports using directive as element only
    scope: {
        ngModel: "="
    },
    replace: true,
    link: function (scope, element, attrs) {

        angular.forEach(scope.ngModel, function (model, index) {

            var el = "";

          switch (model.controlType.toLowerCase()) {
          case "input":
              el = "<my-input ng-model='ngModel[" + index + "]'></my-input>";
              break;
              default:
                  break;
            }

            $compile(el)(scope);
            element.append(el);
        });
  }
};
}])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用AngularJS指令,如何将自定义模型从一个指令传递到另一个指令?

来自分类Dev

如何从另一个指令更改指令自定义属性的值

来自分类Dev

使用函数绑定“&”将值从一个指令传递到另一个指令

来自分类Dev

AngularJS:如何将一个指令编译为另一个指令?

来自分类Dev

AngularJS:如何将一个指令编译为另一个指令?

来自分类Dev

如何从一个指令到另一个指令使用隔离的作用域操作

来自分类Dev

如何从一个指令传递到另一指令

来自分类Dev

如何将自定义对象的数组列表从一个Java类传递到另一个Java类?

来自分类Dev

如何使用AngularJS中的自定义指令将一个html页面插入另一个html页面?

来自分类Dev

如何使用其他自定义指令中的元素标签作为另一个自定义指令的模板

来自分类Dev

从自定义指令内部如何更改另一个span元素的文本?

来自分类Dev

编译从另一个指令AngularJS使用的范围变量传递的指令

来自分类Dev

在Angularjs中的另一个指令模板中使用一个指令

来自分类Dev

如何从另一个指令访问指令的ngModelController?

来自分类Dev

在另一个指令的宿主中使用指令

来自分类Dev

Watch无法在另一个自定义元素指令中使用的自定义属性指令中工作

来自分类Dev

AngularJS:如何在使用ng-repeat时将一个指令中的变量更改反映到另一个指令中

来自分类Dev

AngularJS:如何在使用ng-repeat时将一个指令中的变量更改反映到另一个指令中

来自分类Dev

如何创建属性指令以在 AngularJS 的元素中插入另一个属性指令

来自分类Dev

在另一个内部使用AngularJS指令传递布尔值

来自分类Dev

Angular指令需要另一个使用属性定义的控制器的指令

来自分类Dev

如何在 angularjs 中将一个指令的类应用到另一个指令?

来自分类Dev

仅在存在时如何要求一个指令(在另一个指令内)

来自分类Dev

$ compile另一个指令中的嵌套指令

来自分类Dev

从另一个指令获取指令的属性?

来自分类Dev

从另一个指令访问指令的范围变量

来自分类Dev

从另一个指令编译指令

来自分类Dev

从另一个指令获取指令的属性?

来自分类Dev

给指令一个自定义属性。

Related 相关文章

  1. 1

    使用AngularJS指令,如何将自定义模型从一个指令传递到另一个指令?

  2. 2

    如何从另一个指令更改指令自定义属性的值

  3. 3

    使用函数绑定“&”将值从一个指令传递到另一个指令

  4. 4

    AngularJS:如何将一个指令编译为另一个指令?

  5. 5

    AngularJS:如何将一个指令编译为另一个指令?

  6. 6

    如何从一个指令到另一个指令使用隔离的作用域操作

  7. 7

    如何从一个指令传递到另一指令

  8. 8

    如何将自定义对象的数组列表从一个Java类传递到另一个Java类?

  9. 9

    如何使用AngularJS中的自定义指令将一个html页面插入另一个html页面?

  10. 10

    如何使用其他自定义指令中的元素标签作为另一个自定义指令的模板

  11. 11

    从自定义指令内部如何更改另一个span元素的文本?

  12. 12

    编译从另一个指令AngularJS使用的范围变量传递的指令

  13. 13

    在Angularjs中的另一个指令模板中使用一个指令

  14. 14

    如何从另一个指令访问指令的ngModelController?

  15. 15

    在另一个指令的宿主中使用指令

  16. 16

    Watch无法在另一个自定义元素指令中使用的自定义属性指令中工作

  17. 17

    AngularJS:如何在使用ng-repeat时将一个指令中的变量更改反映到另一个指令中

  18. 18

    AngularJS:如何在使用ng-repeat时将一个指令中的变量更改反映到另一个指令中

  19. 19

    如何创建属性指令以在 AngularJS 的元素中插入另一个属性指令

  20. 20

    在另一个内部使用AngularJS指令传递布尔值

  21. 21

    Angular指令需要另一个使用属性定义的控制器的指令

  22. 22

    如何在 angularjs 中将一个指令的类应用到另一个指令?

  23. 23

    仅在存在时如何要求一个指令(在另一个指令内)

  24. 24

    $ compile另一个指令中的嵌套指令

  25. 25

    从另一个指令获取指令的属性?

  26. 26

    从另一个指令访问指令的范围变量

  27. 27

    从另一个指令编译指令

  28. 28

    从另一个指令获取指令的属性?

  29. 29

    给指令一个自定义属性。

热门标签

归档