Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS自定义指令失去根属性_Javascript_Jquery_Html_Css_Angularjs - Fatal编程技术网

Javascript AngularJS自定义指令失去根属性

Javascript AngularJS自定义指令失去根属性,javascript,jquery,html,css,angularjs,Javascript,Jquery,Html,Css,Angularjs,我已经创建了一个侧栏自定义指令。它正常工作,因为它装载在它应该装载的地方。不正常工作的是标签。他们假定的行为是一个drowpdown,点击时会显示他们的内部元素。当直接粘贴代码时,它可以正常工作,但当使用其他html文件中的代码调用指令时,它不能正常工作。我拍摄了两个屏幕截图,以显示在包含指令html代码的文件中使用class=“page sidebar”与在“root”文件中使用它之间的区别: 很明显,高亮显示行上的几个属性没有应用于第一行 请帮助我,因为我需要作为一个“部分”的意见,以跨

我已经创建了一个侧栏自定义指令。它正常工作,因为它装载在它应该装载的地方。不正常工作的是标签。他们假定的行为是一个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:

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

编辑4:

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

$(".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>