更新:小提琴瓦特/完整的解决方案:http://jsfiddle.net/langdonx/VXBHG/的jQuery UI按钮创建AngularJS指令
在努力进行比较和对比KnockoutJS和AngularJS,我通过KnockoutJS interactive tutorial跑去,每个部分后,我会用AngularJS重写它,使用我已经知道的那些+ AngularJS reference。
当我到达Creating custom bindings教程的第3步时,我觉得现在是开始使用Angular Directives并编写自定义标签的好时机。然后我失败了。
我遇到了两个我一直未能弄清楚的问题。我创建了一个新的小提琴,试图总结我的周围发生了什么事情......头
- (fiddle):我想通了,我的范围界定问题,但是,是有可能只是直通
ng-click
?唯一能让它起作用的方法是将其重命名为jqb-click
,这有点烦人。 - (fiddle):只要我将
.button()
应用于我的元素,事情就变得很奇怪。我的猜测是因为Angular和jQuery UI都在操纵HTML。我不希望这样,但Angular似乎为我的button
(请参见JavaScript的第21行)提供了自己的span
,当然我也希望jQuery UI也是如此。为了让它看起来正确,我篡改了HTML,但在此之前,没有任何功能可行。我仍然有范围问题,并且没有模板绑定。我错过了什么?
据我所知,有一个AngularUI项目我应该看看,我可以拉下我想用CSS做的事情,但在这一点上它更多的是学习如何使用指令比认为这是一个好主意。
哎呀,这么没有指令控制器和'ng-transclude',让我们来看'ng-click'的行为通常......非常棘手。 – Langdon 2013-03-24 22:16:29
no.directive控制器也可以使用父控制器的范围。无论你设置“范围”参数,都是这样。 'ng-transclude'也不影响范围。 'transclude'主要用于确定是将新模板中的现有html包装在新模板中还是将其放弃 – charlietfl 2013-03-24 22:21:00
哦,我想这是事实,我的控制器定义了一个名为test的函数,然后当我删除它时,事实上是我有'范围:{}'文档所说的创建一个孤立的范围。这就是我从例子中复制的东西。 :) 谢谢你的帮助。现在有一个文本属性,我可以使'attrs。$ observe'工作。干杯! – Langdon 2013-03-24 22:31:11