2

我有几个指令,我想为ng-repeat.

<div class="{{field.type_desc}}"  ng-repeat="field in row.fields"></div>

这是控制器中的代码

app.directive('Textbox', function($compile) {
return {
    restrict: 'C',
    link : function (scope,element)
    {
        formFieldTemplate= $('<input>').attr('type','password'); 
        $compile(formFieldTemplate)(scope); 
        var formListElement = $(element);
        formListElement.append(formFieldTemplate);
    }
}
})

页面加载后,我可以在 HTML 中看到正确的类,但仍然看不到指令。

谢谢您的帮助

4

1 回答 1

0

您缺少动态生成指令的一些内容:

var myNewDirectiveScope = $scope.$new();
myNewDirectiveScope.myProperty = 'Some value';

var myDirective = $compile('<div my-directive-name my-property="myProperty"></div>');

var myDirectiveElement = myDirective(myNewDirectiveScope);

$(window.document.body).append(myDirectiveElement);

所以首先我要创建一个新的范围。然后我将字符串 'Some value' 分配给该范围的属性。

然后,我使用带有指令名称的字符串模板和指向您创建的范围内的 myProperty 的属性提供 compile。这将返回一个函数,一旦使用范围调用该函数将返回您可以实际附加到页面上的元素。

所以在你的情况下,它可能是:

app.directive('Textbox', function($compile) {
return {
    restrict: 'C',
    link : function (scope,element)
    {
        var formFieldTemplate = '<input type="password" />';

        var directive = $compile(formFieldTemplate);

        var formListElement = directive(scope);

        formListElement.append(formFieldTemplate);
    }
}
})
于 2013-07-25T16:08:09.130 回答