angularjs $ compile不能用于生产

时间:2015-06-21 17:24:51

标签: asp.net-mvc angularjs

我在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');
    });
}
}

Angular Service:

app.service("mproductService", ["$http", function ($http) {
this.ShowProdUnitPop = function () {
    var request = $http({
        method: "post",
        url: "/Home/GetActiveCat"
    });
    return request;
}}

MVC控制器:

        [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');

它正在本地工作,而不是生产。请帮忙。

1 个答案:

答案 0 :(得分:0)

似乎您在生产服务器上启用了捆绑和缩小功能。当您使用该控制器时,这会破坏您的控制器代码,并且在缩小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
            });
        }
    }
]);

访问this link了解更多信息