【问题标题】:How can i force angular to re-run its bindings, manually?如何手动强制 Angular 重新运行其绑定?
【发布时间】:2014-05-20 21:52:56
【问题描述】:

我正在尝试将 Angular 集成到较旧的现有网络应用程序中。我有几个地方通过 ajax 请求从 rails 部分重新渲染了大部分页面。

一旦以这种方式重新呈现页面的一部分,任何现有的角度绑定(例如:ng-click)都会丢失并且按钮不再起作用。有没有办法手动告诉 Angular 重新检查绑定属性?

【问题讨论】:

    标签: javascript ruby-on-rails angularjs


    【解决方案1】:

    如果您正在加载一些 HTML 并需要 angular 来处理它,您需要在 HTML 代码上运行 $compile 以解析指令,并且您需要将范围附加到返回的链接函数。显示一些代码。如果您只是获取新数据,您可以使用 $http 自动为您调用 $digest,或者您可以从其他回调中调用 $digest 来通知 Angular 它需要更新显示。

    【讨论】:

    • 我认为这可行。然而,在我的情况下,rails 正在渲染完整的部分并通过 AJAX 调用返回它们。有没有办法拦截返回的 html 并用 Angular 编译它?
    • 从架构上讲,您应该有一个指令来包装执行 HTML 请求的代码,然后在 HTML 中使用您的指令来插入从服务器端返回的数据.如果您将其写入指令,您可以重新使用该指令从各种来源加载数据....想想看,您可能可以使用 ng-include 做一些事情来完成这项工作。如果你使用 ng-include 它将获取一些 HTML 并编译它,但控制范围可能会出现一些问题。
    猜你喜欢
    • 2011-07-31
    • 1970-01-01
    • 2018-07-08
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 2011-08-06
    相关资源
    最近更新 更多