javascript - 如何获得一个 Angular Directive(指令)来包含和替换另一个指令?

标签 javascript angularjs

我有一个 AngularJS 指令,directiveFoo 由一个属性实例化:

<div directiveFoo></div>

我希望我的 directiveFoo 总是实例化另一个指令,例如模板是:

<div directiveBar="123"></div>

我的问题是——是否可以在不创建所有浪费节点的情况下做到这一点?我想将 replace 添加到我的指令中,但它会吹走 directiveFoo

我最终想要的是:

<div directiveFoo directiveBar="123"></div>

附有两个 Controller 。

这是一个简化的例子。我试图阻止:

<div directiveA>
    <div directiveB>
        <div directiveC="123">
            <div directiveD></div>
        </div>
    </div>
</div>

在我真的不需要所有嵌套 DOM 节点的情况下

最佳答案

but then it blows away directiveFoo

不应该。 “替换过程将所有属性/类从旧元素迁移到新元素。”-- directive doc

因为属性被迁移,directive-foo 应该出现在生成的 HTML 中。

app.directive('directiveFoo', function() {
    return {
        template: '<div directive-bar="123">bar</div>',
        replace: true,
    }
});

上述指令生成以下 HTML(已在 Chrome 中测试):

<div directive-bar="123" directive-foo>bar</div>

Fiddle .

在 fiddle 中,我还为每个指令创建了一个 Controller (因为你提到你想要那个),并且我展示了 directive-bar 可以访问 directive-foo' Controller 。

(我把 bar 作为模板中的文本,只是为了更容易右键单击它并选择“检查元素”)。

关于javascript - 如何获得一个 Angular Directive(指令)来包含和替换另一个指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878419/

相关文章:

c# - 如何对页面的某个部分进行实时更新?

javascript - Aurelia View 中的脚本标签未执行

javascript - 如何使用 javascript 访问 json 中的嵌套键

javascript - 需要 javascript 数组方面的帮助

javascript - 未使用模态 Bootstrap 和 codeigniter 插入数据

javascript - Angular JS 中站点范围配置的设计模式

javascript - 当对象键值在数组中时如何过滤数组

javascript - 在解决服务方法上的 promise 之前,它会转到主方法的 promise

node.js - app.router 和 express.static 的 Expressjs 顺序

angularjs - Angular ui路由器如何等待子状态加载