将$ http注入指令控制器和缩小

时间:2014-01-29 10:10:05

标签: asp.net-mvc angularjs angularjs-directive

我在我的生产环境中得到其中一个

[$injector:unpr] http://errors.angularjs.org/1.2.2/$injector/unpr?p0=nProvider

我的指示就是这些内容

var app = angular.module('myDir', []);

function link(scope, elm, attrs) {
    scope.$watch('Potato', function (nVal) {
        if (nVal) {
            elm.html(Potato);
        }
     }

function someDir(http, compile) {
    function controller($scope, http) {
        http.get('/some/service/' + $scope.someThing).success(function (result) {
            scope.Potato = result;
            console.log('hooray');
        });
    };

    var dirObject = {
        restrict: 'A',
        scope: {
            'someThing': '='
        },
        link: link,
        controller: controller
    };

    return dirObject;
};
app.directive('someDir', ['$http', '$compile', someDir]);

我应该如何处理将$http注入指令控制器?解决方案托管在azure上,并通过ASP.NET MVC捆绑包缩小。

如果我单独呈现所有脚本文件而不是让它们缩小,一切正常,但是当它们缩小时,我会收到未知的提供程序错误。

添加在指令之外运行的控制器。

angular.element(document).ready(function () {
    "use strict";

    var profileApp = angular.module('profileApp', ['myDir']);

    function ProfileCtrl(scope) {

        scope.companyId = angular.element("#Id").val();

    };

    profileApp.controller('ProfileCtrl', ['$scope', ProfileCtrl]);

    angular.bootstrap(document, ['profileApp']);

});

1 个答案:

答案 0 :(得分:3)

您应该从dirObject返回someDir()。我想这可能是一个错字。

控制器定义也是错误的。如果要运行缩小版本,请使用数组注入:

function controller($scope, http) { ... }

var dirObject = {
    ...
    controller: ["$scope", "$http", controller]
}

return dirObject;