我尝试使用元素指令(限制:" E")来定义自定义组件。这是我的 page.html 模板,该模板通过ng-view
指令进入 index.html :
<eng-popup>This text appears, but is rendered in a span</eng-popup>
Angular IS正在运行; index.html 在body标记中包含ng-app="templatesApp"
指令, app.js 设置模块如下:
var app = angular.module("templatesApp", ['ngRoute']);
此外,在 app.js 中我定义了popup指令:
app.directive('engPopup', function() {
console.log("This console log does not trigger. I have tried 'eng-popup' as the directive's first parameter, but that doesn't work either.");
return {
restrict: 'E',
transclude: false,
template: '<div id="thisDoesNotEvenAppear"></div>'
};
});
问题是,当我查看组件的结果html时,它看起来像这样:
<span class="ng-scope" jQuery110209261664696867675="7">This text should appear, surely</span>
</eng-popup class="ng-scope" jQuery110209261664696867675="8"><//eng-popup>
所以我有几个问题:
为什么eng-popup指令console.log
调用NOT被触发?
为什么eng-popup标记中的内容最终会出现在span
?
最神奇的是,为什么eng-popup标签以END标签开头并以带有2个斜杠的标签结束?
最后,我搞砸了什么,让这一切都发生了?
修改
根据要求,这是一个Plunker。看起来这个简化版本中没有发生span和end-tag问题,但是eng-popup指令仍然没有被触发:
https://plnkr.co/edit/mVa6Mye5besJAtWihMWF?p=preview
RE-修改
为了防止这仍然是可以解决的,这里是最新的Plunkr我已经能够组合在一起了。它不起作用,它至少与我们的真实项目有共同之处。不确定它是否也是同样的问题
https://plnkr.co/edit/sJoYnYjqx9ZGIH0KhObC
答案 0 :(得分:0)
我已经修改了你的例子(很少),它似乎工作正常吗?
https://plnkr.co/edit/3NlHNDOCBVRktk3ZcsnV?p=preview
我所做的是删除ui-router
要求,因为您尚未添加脚本参考。在那之后,它的工作原理。那么,您是否正确地在项目中包含ui-router
?
答案 1 :(得分:0)
所以一位同事已经指出它的作用&#39;在Chrome中。结果证明它是一个IE8问题。谁曾想到... (我们使用1.2.29的全部原因是因为我们的许多用户将通过IE8访问它,但看起来自定义指令不在桌面上。)