Asp.net mvc angularjs$compile不在生产环境中工作
我在MVC应用程序中使用angularJS,并在angularJS中使用ajax调用加载部分。我使用$compile来编译html。在本地,一切都很好,但在生产上却不起作用。显示意外错误。下面是我正在使用的代码 角度控制器:Asp.net mvc angularjs$compile不在生产环境中工作,asp.net-mvc,angularjs,Asp.net Mvc,Angularjs,我在MVC应用程序中使用angularJS,并在angularJS中使用ajax调用加载部分。我使用$compile来编译html。在本地,一切都很好,但在生产上却不起作用。显示意外错误。下面是我正在使用的代码 角度控制器: app.controller("mproductController", ["$scope", "mproductService", "$compile", function ($scope, mproductService, $compile) { $scope.
app.controller("mproductController", ["$scope", "mproductService", "$compile", function ($scope, mproductService, $compile) {
$scope.ShowProdUnitPop = function (val) {
mproductService.ShowProdUnitPop(val).success(function (result) {
debugger;
var snippet = angular.element(result);
$compile(snippet)($scope);
$("#dvAddProd").html(snippet);
$("#dvPopup").modal('show');
});
}
}
[HttpPost]
public ActionResult AddProduct(int id)
{
ViewBag.ProductCategory = Utility.GetProd(id);
return PartialView("_AddProduct",new Product());
}
角度服务:
app.service("mproductService", ["$http", function ($http) {
this.ShowProdUnitPop = function () {
var request = $http({
method: "post",
url: "/Home/GetActiveCat"
});
return request;
}}
MVC控制器:
app.controller("mproductController", ["$scope", "mproductService", "$compile", function ($scope, mproductService, $compile) {
$scope.ShowProdUnitPop = function (val) {
mproductService.ShowProdUnitPop(val).success(function (result) {
debugger;
var snippet = angular.element(result);
$compile(snippet)($scope);
$("#dvAddProd").html(snippet);
$("#dvPopup").modal('show');
});
}
}
[HttpPost]
public ActionResult AddProduct(int id)
{
ViewBag.ProductCategory = Utility.GetProd(id);
return PartialView("_AddProduct",new Product());
}
此行上正在抛出错误:
var snippet = angular.element(result);
$compile(snippet)($scope);
$("#dvAddProd").html(snippet);
$("#dvPopup").modal('show');
它在本地工作,但不在生产上。请提供帮助。似乎您正在使用生产服务器上启用的捆绑和缩小功能。这会在您使用控制器时破坏控制器代码,并且在缩小JS文件时需要对DI进行内联数组注释 最可能的答案是您正在使用
$compile
,将它注入控制器并使用它,这很好。似乎您在控制器中没有遵循内联数组依赖项注入
您还需要将compile元素附加到dvAddProd
元素,而不是更新html
,将html附加到DOM将永远不会对该元素进行角度绑定。如果此代码上有角度绑定,则它不应该在任何环境中工作
控制器
app.controller('someCtrl', ['$scope', '$http', '$compile',
function($scope, $http, $compile) {
//you should have controller in this way that would fix your issue
//note I'm using inline array notation of DI
$scope.ShowProdUnitPop = function(val) {
mproductService.ShowProdUnitPop(val).success(function(result) {
debugger;
var snippet = angular.element(result);
var compiledSnippet = $compile(snippet)($scope);
$("#dvAddProd").append(compiledSnippet); //should attach compile element
});
}
}
]);
有关更多信息,请访问您是否可以在使用
$compile
服务的地方添加完整的代码?我想是它的控制器。@pankajparkar:编辑了控制器代码。我完全按照你的建议去做。它在本地工作正常,但在生产中产生了问题。@Big您能添加控制器代码吗?。请更新您的问题