AngularJS: 动态加载的组件未显示
AngularJS: dynamically loaded component not showing
我继承了一个混合使用 AngularJS 和 JQuery 的项目。我目前遇到动态加载的 md-switch
指令在动态加载时不显示的问题。请看以下内容:
在我看来,我有
...
<md-switch class="md-primary md-switch-custom-margin" aria-label="Done Switch" ng-model="done"
ng-change="markDone($event, @Newtonsoft.Json.JsonConvert.SerializeObject(!Model.Done))" />
...
在第一页加载时,此控件显示正常。但是,在单击按钮时,我会通过 ajax 检索 md-switch
所在容器的新局部视图,如下所示:
$.ajax({
url: "../../MyController/GetPartial",
type: "GET",
dataType: "html"
}).done(function (response) {
$("#body-container").html(response);
var angularScope = angular.element("div[ng-controller='MyAngularController'").scope();
//have tried both of the following
//angularScope.$apply();
})
当部分视图加载到页面中时,我在页面上的所有 md-switch
都不可见,尽管它们确实出现在 DOM 上并且看起来格式与在任何动作发生之前。
在查看了大量帖子后,我仍然不确定我在这里遗漏了什么。感谢所有帮助。
md-switch 指令/组件未链接且未编译,因此angular无法识别
我在我的 jquery 脚本中使用 $compile
找到了解决问题的方法:
我的 ajax 请求的完成回调:
.done(function (response) {
//have angular recompile it's dom directives such as md-switch
angular.element(document.body).injector().invoke(function ($compile) {
var container = $("#body-container");
var scope = container.scope();
container.html(response);
$compile(container.contents())(scope);
})
}
我继承了一个混合使用 AngularJS 和 JQuery 的项目。我目前遇到动态加载的 md-switch
指令在动态加载时不显示的问题。请看以下内容:
在我看来,我有
...
<md-switch class="md-primary md-switch-custom-margin" aria-label="Done Switch" ng-model="done"
ng-change="markDone($event, @Newtonsoft.Json.JsonConvert.SerializeObject(!Model.Done))" />
...
在第一页加载时,此控件显示正常。但是,在单击按钮时,我会通过 ajax 检索 md-switch
所在容器的新局部视图,如下所示:
$.ajax({
url: "../../MyController/GetPartial",
type: "GET",
dataType: "html"
}).done(function (response) {
$("#body-container").html(response);
var angularScope = angular.element("div[ng-controller='MyAngularController'").scope();
//have tried both of the following
//angularScope.$apply();
})
当部分视图加载到页面中时,我在页面上的所有 md-switch
都不可见,尽管它们确实出现在 DOM 上并且看起来格式与在任何动作发生之前。
在查看了大量帖子后,我仍然不确定我在这里遗漏了什么。感谢所有帮助。
md-switch 指令/组件未链接且未编译,因此angular无法识别
我在我的 jquery 脚本中使用 $compile
找到了解决问题的方法:
我的 ajax 请求的完成回调:
.done(function (response) {
//have angular recompile it's dom directives such as md-switch
angular.element(document.body).injector().invoke(function ($compile) {
var container = $("#body-container");
var scope = container.scope();
container.html(response);
$compile(container.contents())(scope);
})
}