Javascript AngularJS自定义指令失去根属性
我已经创建了一个侧栏自定义指令。它正常工作,因为它装载在它应该装载的地方。不正常工作的是标签。他们假定的行为是一个drowpdown,点击时会显示他们的内部元素。当直接粘贴代码时,它可以正常工作,但当使用其他html文件中的代码调用指令时,它不能正常工作。我拍摄了两个屏幕截图,以显示在包含指令html代码的文件中使用class=“page sidebar”与在“root”文件中使用它之间的区别: 很明显,高亮显示行上的几个属性没有应用于第一行 请帮助我,因为我需要作为一个“部分”的意见,以跨多个页面使用 编辑:指令代码:Javascript AngularJS自定义指令失去根属性,javascript,jquery,html,css,angularjs,Javascript,Jquery,Html,Css,Angularjs,我已经创建了一个侧栏自定义指令。它正常工作,因为它装载在它应该装载的地方。不正常工作的是标签。他们假定的行为是一个drowpdown,点击时会显示他们的内部元素。当直接粘贴代码时,它可以正常工作,但当使用其他html文件中的代码调用指令时,它不能正常工作。我拍摄了两个屏幕截图,以显示在包含指令html代码的文件中使用class=“page sidebar”与在“root”文件中使用它之间的区别: 很明显,高亮显示行上的几个属性没有应用于第一行 请帮助我,因为我需要作为一个“部分”的意见,以跨
app.directive('sidebar', function () {
return {
restrict: 'E',
templateUrl: "/app/views/sidebar.html"
};
});
编辑2:
在帖子中添加这一点,因为我的解释可能会让人困惑:
我知道混乱可能在哪里,但它们是不同的东西边栏>是我创建的指令。class=“page sidebar”来自我正在使用的模板,是将所有内容格式化到其位置的工具。我试图在指令中插入class=“page sidebar”以查看它是否有效,但它们是不同的东西 编辑3: 为了澄清混乱,我希望:两张图片都显示侧边栏正在工作。我知道它是一个元素,因此我正在使用
$(".owl-carousel").owlCarousel({mouseDrag: false, touchDrag: true, slideSpeed: 300, paginationSpeed: 400, singleItem: true, navigation: false,autoPlay: true});
前面的代码位于包含在html中的plugins.js文件中。由于某些原因,加载页面时未运行此行。当我在chrome控制台中运行这一行时,出现了正确的小部件
由于某些原因,加载页面时js内容没有运行。您的主要问题是
限制:'E',
,它将其限制为元素。这解释了为什么它适用于
,而不适用于
。如果要使用类,需要将其更改为restrict:'C'
另一个问题是,当您试图将指令用作类时,您使用的是class=“page sidebar”
,而不是class=“sidebar”
有关指令,请参见angular文档中的。: “限制”选项通常设置为:
- “A”-仅与属性名称匹配
- “E”-仅与元素名称匹配
- “C”-仅与类名匹配
- “M”-仅与注释匹配 这些限制可以根据需要进行组合:
“AEC”-匹配
侧栏的属性、元素或类名指令定义对象非常清楚地表明,由于restrict:'E'
属性,它将使用标记名侧栏处理DOM节点以呈现指令模板
因此,将该指令作为HTML节点使用,而不是在类中使用(因为它需要将属性restrict
设置为C
letter)
您能发布一些指令代码吗?这可能是指令上的内容…在原始帖子中编辑了它!使用restrict='C'
,如果使用restrict:'E',则使用元素标记,即
`@Forget-更新了答案。。。如果希望指令只应用于类,则需要restrict:'C'
。我知道混淆可能在哪里,但它们是不同的东西。是我创建的指令。class=“page sidebar”来自我正在使用的模板,是将所有内容格式化到其位置的工具。我试图在指令中插入class=“page sidebar”,看看它是否有效,但它们是不同的东西!我在OP中编辑了它,但发生了以下事情:边栏元素是我创建的。工作正常,完成了。页面侧边栏是由我使用的管理模板页面创建的类。这是因为css和所有这些。问题是,当sidebar.html的内容在索引中时,它可以正常工作,但是,当我将内容移动到sidebar.html并简单地使用de元素时,它会显示正确的ul和li等内容,但例如,下拉菜单不起作用。希望我能把它弄清楚@忘了吧,我想下拉列表可能不起作用,因为它们无法从父范围访问函数。您能否添加整个场景中涉及的角度代码,即控制器或具有下拉按钮逻辑的任何东西。同时,我需要查看一下/app/views/sidebar.html
结构。请检查我的编辑。我改变了结构,因为现在侧边栏是“固定的”,页面内容根据URL加载。我有一些来自模板的小部件,以前工作过,但现在不工作。任何有帮助的问题,请说明!您说过前面的代码在一个plugins.js文件中,该文件包含在html中。您的意思是您正在为侧栏
指令在html模板中加载Javascript吗?侧栏指令已经不存在了!我使用ui视图,这是我看到的非常有用的东西。这些是我的“重要”文件:index.html,它有侧边栏的html代码和ui视图,允许我在其中插入代码。在本例中,我从dashboard.html中插入内容,dashboard.html中有几个小部件。所以这些小部件可以工作,我有一个src=“js/plugins.js”脚本,其中包含我在最新编辑中提到的代码。预期的行为是运行plugins.js中的任何内容
<sidebar></sidebar>