Asp.net mvc angularjs$compile不在生产环境中工作

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.

我在MVC应用程序中使用angularJS,并在angularJS中使用ajax调用加载部分。我使用$compile来编译html。在本地,一切都很好,但在生产上却不起作用。显示意外错误。下面是我正在使用的代码

角度控制器:

    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您能添加控制器代码吗?。请更新您的问题