2013-11-01 76 views
1

我学习AngularJS和我在与对话一些困难。我怎样才能让AngularJS绑定一个fancybox对话框?

,因为我将我的应用从基于jQuery的古典到角一个,我想使用的fancybox与内部定制动态HTML打开对话框,用的fancybox开法。

$.fancybox.open(html); 

我写使用的fancybox服务:现在我打开我的对话,但是对话框里面的内容是不是“编译”对角,所以任何角度指令对HTML设置不起作用。

见的例子

http://plnkr.co/edit/UwryF1ocleyND7zxCGJz?p=preview

我想这个问题是在服务上,但我不知道如何解决它。你能告诉我怎样才能在对话框中显示的HTML中获得一个html敏感的指令吗?

UPDATE

我试着使用$compile,和(直接从NG-点击调用指令里面的方法)设定的指令,而不是服务的

http://plnkr.co/edit/Y18bRSMdV62VObMGJ2Ie?p=preview

现在有什么问题?为什么我的$compile不能按预期工作?

+0

你真的需要整个的fancybox包装成一个角度指令,使之与角 – charlietfl

+0

如果'.wrapper'工作进展顺利是不被隐藏的,警报是否工作?我禁用“显示:无”,他们没有。 – JFK

+0

@JFK没有它们,因为角色绑定没有被编译。 – apelliciari

回答

3

的问题是,angular查找函数表达式scope,而不是作为window纯JavaScript本身。因此,当你在$scope添加alert功能,它将被正确连接:http://plnkr.co/edit/y02UMQ2kU4fh8Imsa82u?p=preview

$scope.alert = function (phone) { window.alert(phone.name); }; 
+0

你是对的。这是一个非常愚蠢的错误! – apelliciari

+1

未来使用CoffeeScript的那些注意事项:请确保您的指令的功能$ scope.open_fancybox(),您结束符合返回true。否则,与DOM和Coffeescript的隐式返回函数交互可以允许任意注入。 –

相关问题