javascript - Angular 未在自定义指令内编译

标签 javascript angularjs

我有一个如下所示的指令:

app.directive('fieldsetCollapse', function() {
return {
    restrict: 'A',
    scope: {},
    compile: function(tElement, tAttrs, transclude) {
        var wrapperElement = angular.element('<div ng-show="isOpen"></div>'),
            legendElement = tElement.find('legend'),
            collapsibleContent = tElement.children().not('legend'),
            toggleBtn = angular.element('<a href="#" class="twisty" ng-class="{ true: \'twisty-open\', false: \'twisty-closed\' }[isOpen]" ng-click="toggle()"></a>');

        legendElement.css('cursor', 'pointer')
                      .attr('ng-click', 'toggle()');

        tElement.css({
            'position': 'relative',
            'marginLeft': '20px'
        });
        tElement.prepend(toggleBtn);

        angular.forEach(collapsibleContent, function(obj, i) {
            $(obj).remove();
            wrapperElement.append(obj);
        });

        tElement.append(wrapperElement);

        return function(scope, element, attrs) {
            var directiveValue = (scope.$eval(attrs.gaigCollapsibleFieldset));
            scope.isOpen = (directiveValue == undefined) ? true : directiveValue;

            scope.toggle = function() {
                scope.isOpen = !scope.isOpen;
            }

        }
    }
}

});

适用于此标记:

<fieldset fieldset-collapse> ... </fieldset>

如果我尝试在

中添加任何内容,例如:

<fieldset fieldset-collapse>{{foo}}</fieldset>

...其中 foo 是在我的 Controller 范围内定义的,输出是

{{foo}}

Angular 不会编译我在标签和指令之间添加的任何内容。我是否遗漏了一些东西来使这种情况在我的指令中发生?

最佳答案

您正在指令定义对象中创建一个隔离范围

return {
    restrict: 'A',
    scope: {} // <--- isolated scope
}

这意味着您的指令无权访问 foo 值所在的父作用域。

把它注释掉就可以了。 示例http://jsfiddle.net/jaimem/RE7Jj/1/

如果您不希望指令具有对父作用域的完全访问权限,您可以在本地作用域属性 foo 和父作用域的 foo 之间设置双向绑定(bind)。文档中的更多详细信息:http://docs.angularjs.org/guide/directive

关于javascript - Angular 未在自定义指令内编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13088678/

相关文章:

javascript - AJAX PHP 函数 onchange 选择框

javascript - JQuery 代码只适用于 firefox?

javascript - 如何防止点击时调用 ng-drop-success ?

javascript - 从 ng-change 函数调用 ng-click 函数

Javascript - 浏览器关闭后cookie会被清除吗?

php - CronJobs 可以执行包含 Javascript 的 php 吗?如果否,还有其他选择吗?

javascript - 如何检查 ionic 本地存储中的 null 或未定义值并重定向到登录页面?

angularjs - 我的 Breeze 脚本中不推荐使用的方法的版本问题

javascript - 这个 javascript 值得用来加速页面加载吗?

javascript - ie10+ Angular 选择问题