如何使用ng-model和生成的tag指令来进行绑定?

时间:2015-11-11 13:56:35

标签: angularjs

我正在创建指令,根据进入的类型动态生成标记。 但在这种情况下,我无法让feature工作。

1)HTML:ng-model重复ng-repeat并绑定custom-tag(自定义标记可以是datainput

select

这是我的指令代码: 这个自定义指令创建了一个<div ng-repeat="item in head"> <div ng-repeat="(key, value) in data" ng-if="key === item.name"> <label>{{item.title}}</label> <custom-tag type="item.type" ng-model="data[key]"></custom-tag> </div> </div> {{data}} // {"name":"0","number":"0","contact":"0","type":"0","id":8},例如它是custom tag,然后我添加了一个属性'input'但是在哪里获得对我找不到的模型的引用。我尝试了很多不同的方法。 最后,我将ng-model替换为新创建的custom tag代码

input

我应该在ng-model值中传递什么才能使其有效?

它的工作没有隔离范围,但我需要它来接收元素的类型。

对不起我的英语和困难的解释。

1 个答案:

答案 0 :(得分:1)

您可以将ngModel作为附加绑定传递:

.directive('customTag', function($compile, $parse) {
    return {
        scope: {
            model: '=ngModel',
            type: "@"
        },
        require: 'ngModel',
        restrict: 'E',
        replace: true,
        link: function($scope, el, attr, ngModel) {
            var input = angular.element('<input type="text" ng-model="model" />');
            var linkFn = $compile(input);
            var content = linkFn($scope);
            el.replaceWith(content);
        }
    }
});

并确保插入类型,您不需要双向绑定:

<custom-tag type="{{item.type}}" ng-model="data[key]"></custom-tag>