Jquery 无法在mvc和angularjs的部分视图中获取$scope值
我想在我的主目录中加载部分。 这是我的Jquery 无法在mvc和angularjs的部分视图中获取$scope值,jquery,asp.net-mvc,angularjs,asp.net-mvc-4,Jquery,Asp.net Mvc,Angularjs,Asp.net Mvc 4,我想在我的主目录中加载部分。 这是我的\u layout.cshtml页面 <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>@ViewBag.Title - My ASP.NET Application</title> @Styles.
\u layout.cshtml
页面
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Content/Angular/angular.min.js"></script>
<script src="~/Content/Angular/ui-bootstrap-tpls.min.js"></script>
<script src="~/Content/Angular/Module.js"></script>
</head>
<body ng-app="myapp">
@Ajax.ActionLink("IMR", "Demo", "IMR", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "divBody" })
<div class="container body-content" id="divBody">
@RenderBody()
</div>
@RenderSection("scripts", required: false)
</body>
这是我的演示部分视图
<script src="~/Content/Angular/IMRController.js"></script>
<div ng-controller="mycntrl">
{{myname}}
</div>
IMRController.js
var myApp = angular.module('myapp', []);
myApp.controller("mycntrl", function ($scope) {
$scope.myname = "Amit";
});
但是在demo.cshtml中,我单击IMR,它呈现部分视图,但它不显示myname
它在浏览器中显示表达式
{{myname}}
在“角度控制器”中,在窗口上创建全局函数:
window.update = function(){
var scope = angular.element($("#div-where-ng-app-is")).scope();
scope.$apply()
}
在asp控件中,成功调用全局函数update():
@Ajax.ActionLink("IMR", "Demo", "IMR", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "divBody", OnSuccess = "window.update()" })
不太清楚asp方面的情况,但我尝试的第一个解决方案是在ajax调用后使用$scope.$apply()触发角度$digest循环,我必须在这里编写
$scope.$apply()
@ajax.ActionLink(“IMR”、“Demo”、“IMR”、新AjaxOptions{InsertionMode=InsertionMode.Replace、UpdateTargetId=“divBody”、OnSuccess=“$scope.$apply()”})$scope未定义您需要从窗口访问$scope,类似于这样的操作:
@Ajax.ActionLink("IMR", "Demo", "IMR", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "divBody", OnSuccess = "window.update()" })