【发布时间】:2014-12-27 12:41:00
【问题描述】:
我在尝试使用 AngularJS 中的指令渲染另一个 HTML 时遇到问题。
如果模板 HTML 没有事件,它工作得很好:
<button id="{{item.id}}">Some Button !</button>
将被渲染为:
<button id="123">Some Button !</button>
但如果模板 HTML 有一些事件,角度表达式将不起作用:
<button id="{{item.id}}" onmouseover="doSomething({{item.id}})">Some Button !</button>
将被渲染为:
<button id="123" onmouseover="doSomething({{item.id}}">Some Button !</button>
我尝试导入另一个 HTML 并使用 Directives 和 ngInclude 动态更改内容,但是当它们尝试包含模板 HTML 时,它们的反应方式相同。
这个问题只发生在事件(onfocus、onmouseover、onclick)并且html的任何其他部分都被成功渲染。
我想导入一个 HTML,并且我想用数据完全替换表达式。这样做的原因之一是我们有很多自定义的 JSP 标签库,我们希望将它们转换为 AngularJS 指令。在这些标签中有很多事件,例如我们自己的自定义“自动完成”标签有超过 10 个事件,只有当 angular 将我们的表达式呈现在这些事件中时,它们才能轻松转换为指令(但它不是!)
谢谢
【问题讨论】:
-
你真的应该使用像
ng-mouseover这样的角度等效项。还有这个 jQuery 选择器在属性中的意图是什么?这真的不是做它的角度方式,你将很难做到这一点...... -
你是对的......我应该使用角度等价物......但我已经在另一个 JS 文件中编写了像“doSomething()”这样的函数,它们不在我的范围内...... 。 我应该怎么办 ?重写所有这些以在 Angular 中工作?我不能以某种方式让它们像上面的例子一样工作吗?顺便说一句,我删除了 jQuery 选择器...谢谢提及...
-
改用
doSomething(item.id),但如果函数不在作用域内,它将无法工作...如果函数是全局的,您可以尝试$window.doSomething(item.id)。而且我认为没有什么可以阻止您使用ng-mouseover。
标签: angularjs angularjs-directive angularjs-ng-include