javascript - AngularJS 自定义指令丢失根属性

标签 javascript jquery html css angularjs

我创建了一个侧边栏自定义指令。它工作正常,因为它加载到它应该加载的位置。无法正常工作的是标签。他们假定的行为是下拉菜单,单击时会显示其内部元素。当直接粘贴代码时它可以正常工作,但当使用其他 html 文件中的代码调用指令时则不能正常工作。我截取了 2 个屏幕截图来显示在包含指令的 html 代码的文件中使用 class="page-sidebar"与在“根”文件上使用它之间的区别:

inside the directive

outside

很明显,突出显示的行中的几个属性未应用于第一个行。

请帮忙,因为我需要将其作为跨多个页面使用的“部分” View 。

编辑:指令代码:

app.directive('sidebar', function () {
    return {
        restrict: 'E',
        templateUrl: "/app/views/sidebar.html"
    };
});

编辑2:

在帖子中添加这个,因为它可能与我的解释方式混淆:

我知道混淆可能在哪里,但它们是不同的东西。 < sidebar > 是我创建的指令。 class="page-sidebar"来 self 正在使用的模板,它是将所有内容格式化到其位置的原因。我尝试将 class="page-sidebar"插入到指令中以查看它是否有效,但它们是不同的东西。

编辑3:

为了消除混淆,我希望:两张图片都显示侧边栏正在工作。我知道它是一个元素,因此我正在使用 < sidebar >,它正在工作,这不是问题所在。问题是当我使用它时,下拉菜单等内容(如第二张图片所示)在我单击它们时不起作用,而当元素内容只是粘贴到 index.html 而不是 sidebar.html 中时, 它有效。

enter image description here

enter image description here

编辑4:

找到了问题,但仍然没有解决方案。我改变了一些东西,而不是侧边栏,它现在位于小部件上。侧边栏现在始终加载,它是根据 URL 加载的页面内容。这帮助我找到了问题所在:

$(".owl-carousel").owlCarousel({mouseDrag: false, touchDrag: true, slideSpeed: 300, paginationSpeed: 400, singleItem: true, navigation: false,autoPlay: true});

前面的代码位于 html 中包含的 plugins.js 文件中。由于某种原因,加载页面时未运行此行。当我在 chrome 控制台中运行这一行时,出现了正确的小部件。

由于某些原因,页面加载时 js 内容未运行。

最佳答案

您的主要问题是 restrict: 'E', ,这将其限制为元素。这解释了为什么它适用于 <sidebar> , 但不适用于 <div class="sidebar"> .如果要使用类,需要改成restrict: 'C' .

另一个问题是,当您尝试将指令用作类时,您使用的是 class="page-sidebar"而不是 class="sidebar" .

参见 docs用于指令。

关于javascript - AngularJS 自定义指令丢失根属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35923285/

相关文章:

javascript - jQuery 从 xml 文档中提取属性

javascript - 为什么每次点击时数组都是空的?

html - 如何使我的 css 导入到 html 正确?

html - 为什么 Windows Phone(7 或 8)允许点击 divs?

javascript - Html/javascript 页面在 iPhone 上抛出 404,但在 PC 上运行良好

javascript - 在每个原型(prototype)选择器结果中按类更新元素

javascript - 如何通过类名隐藏td?

python - 隐藏了四分之一的单选按钮

javascript - 返回一个函数(来自 Stoyan Stefanov 的《面向对象的 JavaScript》第 95 页)

javascript - 使用 javascript onload() 和 ajax 检索 php 数组