我在我的生产环境中得到其中一个
[$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']);
});
答案 0 :(得分:3)
您应该从dirObject
返回someDir()
。我想这可能是一个错字。
控制器定义也是错误的。如果要运行缩小版本,请使用数组注入:
function controller($scope, http) { ... }
var dirObject = {
...
controller: ["$scope", "$http", controller]
}
return dirObject;