繁体   English   中英

我的角度指令中的.html()无法正常工作

[英].html() in my angular directive is not working

我正在将代码转换为角度代码,并且需要有关创建指令的帮助。 我正在尝试转换以下内容

jQuery(document).ready(function ($) {
"use strict";

$('#cool-navigation').append('<ul class="navigation">' + $('.navigation').html() + '</ul>');
});

app.directive('coolnavigation', function () {
    return { template: '<ul class="navigation">' + $('.navigation').html() + '</ul>' };
});

这是HTML。 第一个视图是外壳,第二个视图称为topnav

<section data-cc-sizer data-ng-controller="shell as vm">

<!-- Sticky Nav -->
<div data-coolnavigation class="sticky-navigation" id="sticky-navigation"></div>
<!-- Sticky Nav -->

<div id="wrapper">
    <div class="top_wrapper clearfix">
        <header class="top-header shadow">
            <div data-ng-include="'/app/layout/topnav.html'"></div>
        </header>
    </div>
</div>
<section id="content">
    <div id="wrapper" data-ng-view></div>
</section>
</section>

<section  data-cc-topnav data-ng-controller="topnav as vm">

<div class="container">
    <div class="row header">
        <div class="col-class">
            <nav>
                <ul class="navigation">
                    <li data-ng-repeat="r in vm.navRoutes">
                        <a href="#{{r.url}}" class="{{r.className}}" data-ng-bind-html="r.config.settings.content"></a>
                    </li>
                </ul>

            </nav>
        </div>
    </div>
</div>

</section>

我认为.html()缺少某些内容。 有人可以帮我解决这个问题吗?

谢谢!

您在模板中引用$('.navigation') ,这是一个内部包含一些Angular代码的HTML块。 您的模板尚不能保证Angular会渲染该位,这就是为什么我们首先使用指令的原因。 这就是$('。navigation')为空的原因。 如果您尝试将其从jQuery转换,请停止使用jQuery。

指令具有link功能,该功能在编译后发生。 可以将link函数想像为jQuery中的document.ready ,但是要用于特定的元素或指令。 当然,您正在尝试引用完全不同的元素,因此您将不知道何时完成。 这就指出了一个更大的问题……为什么要尝试将DOM从一种结构复制到另一种结构? 只需将该DOM放入模板中,然后将其命名为“ day”即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM