【问题标题】:How can I get AngularJS binds working with a fancybox dialog?如何让 AngularJS 绑定与花式框对话框一起使用?
【发布时间】:2013-11-01 15:01:28
【问题描述】:

我正在学习 AngularJS,我在对话方面遇到了一些困难

由于我正在将我的应用程序从基于 Jquery 的经典应用程序转换为 Angular 应用程序,因此我想使用 Fancybox 打开带有自定义动态 HTML 的对话框,并使用 fancybox open 方法。

$.fancybox.open(html);

我编写了一个使用 fancybox 的服务:现在我打开了我的对话框,但是对话框内的内容不是针对 angular 的“编译”,所以任何 angular 指令都设置为那个 HTML 不起作用。

查看示例

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

我想问题出在服务中,但我不知道如何解决。你能告诉我如何在对话框中显示的 HTML 中获得对角度指令敏感的 html 吗?

更新

我尝试使用$compile,并设置指令而不是服务(直接从 ng-click 调用指令内的方法)

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

现在怎么了?为什么我的$compile 没有按预期工作?

【问题讨论】:

  • 你真的需要将整个fancyBox包装成一个角度指令,以使其与角度顺利工作
  • 如果.wrapper 未隐藏,警报是否有效?我禁用了“显示:无”,但他们没有。
  • @JFK 不,他们没有,因为没有编译角度绑定。
  • @charlietfl 你能举个例子吗?

标签: javascript jquery angularjs dialog fancybox


【解决方案1】:

问题是angularscope 上查找函数表达式 而不是在window 上查找普通javascript 所做的那样。因此,当您在$scope 上添加alert 函数时,它将正确连接:http://plnkr.co/edit/y02UMQ2kU4fh8Imsa82u?p=preview

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

【讨论】:

  • 对于那些使用coffeescript的人的未来注意事项:确保在指令的函数$scope.open_fancybox()中以return true结束该行。否则,与 DOM 和 Coffeescript 的隐式返回函数交互可以允许任意注入。
猜你喜欢
  • 2013-03-15
  • 2015-07-18
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多