【问题标题】:How to load MVC Partial View and keep Angular JS working如何加载 MVC 局部视图并保持 Angular JS 工作
【发布时间】:2015-07-19 08:17:15
【问题描述】:

我应该如何加载 mvc 部分视图并保持 Angular JS 正常工作。 渲染布局后,Angular JS 工作正常,但如果我在布局中加载部分视图,Angular JS 在部分中不再工作。 我猜在我将 HTML 注入 DOM 之后,Angular 引擎没有编译 ng- 指令。

【问题讨论】:

  • 如何注入 HTML?
  • @arnolrob 问题类似于stackoverflow.com/questions/18312523/…
  • 首先我使用 jQuery $('#id').html(data) 进行注入,然后我更改为 angular.element('#id').html(data)。还尝试编译 var element = angular.element(data); $编译(元素)($范围); angular.element("#id").html(element);
  • @kanchirk 是的,谢谢,我已经看过那个帖子了,不幸的是它对我的情况没有帮助

标签: javascript asp.net asp.net-mvc angularjs asp.net-mvc-4


【解决方案1】:

而不是手动注入您的 HTML。无论是通过 angular.element.html 还是 $().html。尝试使用以下角度认可的选项之一:

  • 类似ngRoute 或ui-router 的路由引擎。引擎可以包含由后端呈现的模板。
  • ngInclude 指令。这样您就可以直接包含 HTML 模板。
  • 写一个custom directive 注入你的HTML。

因为这些是 AngularJS 友好的方法,Angular 将实际解析 HTML 并绑定新加载的 HTML 中的任何值。

【讨论】:

  • 目前这两种方法都很难实现。它是一个带有可配置菜单的 ASP.NET MVC 应用程序。所以路由将很难在客户端和模板上实现。对不起。还有其他想法吗? :D
  • 我假设您正在向 .NET 后端发出 GET HTTP 请求,该后端又将 HTML 返回给 AngularJS。与其自己发出请求,不如让 ngInclude 指令(AngularJS 中的原生指令)为您解析 HTML。您可以将 src 链接到变量,以便切换包含的 HTML。有关更多信息,请参阅此答案:stackoverflow.com/a/21860569/2637098
  • 我正在尝试类似
    并选择特定菜单将 url 分配给 $scope.selectedUrl。这是行不通的。我有这种方法吗?
  • 使用一种方法将 selectedUrl(可能是 getSelectedUrl?)返回给指令。这将在 selectedUrl 更改时触发 $apply。这又应该刷新内容。
  • 至少我在正确的轨道上?我指的是之前的评论
【解决方案2】:

来自here的回答

我认为您可能需要将 HTML 字符串或 DOM 编译成模板。

更多信息,请参考:

$编译

https://docs.angularjs.org/api/ng/service/$编译

有些话题可能对您有所帮助:

AngularJS - 动态创建指定指令的元素

AngularJS - Dynamically creating elements that specify directives

将 Angularjs 动态绑定到新创建的 html 元素

Bind Angularjs to newly created html element dynamically

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-21
    • 2013-10-26
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多