我有一个控制器,它有一些自定义的UI路由器解析params注入:
uxgroups.controller('UXGroupStepCtrl', ['$scope', '$rootScope', '$stateParams', 'stepData', function ($scope, $rootScope, $stateParams, stepData) {
但是当我在我的指令中使用这个控制器时,我得到的错误是stepData未定义:
angular.js:14682 Error: [$injector:unpr] http://errors.angularjs.org/1.5.8/$injector/unpr?p0=stepDataProvider%20%3C-%20stepData%20%3C-%20UXGroupStepCtrl%20%3C-%20UXGroupStepCtrl
是:
Unknown provider: stepDataProvider <- stepData <- UXGroupStepCtrl <- UXGroupStepCtrl
这是指令定义:
app.directive('passProcess', function (stepData) {
return {
restrict: 'E',
controller: 'UXGroupStepCtrl',
scope: { p: '=' },
templateUrl: '/App/Modules/UXGroup/Views/process.html'
};
});
有没有办法在我的指令控制器中解除或定义额外的参数?
答案 0 :(得分:1)
您无法通过类似指令将数据传递给控制器。但控制器的范围与指令相同。所以你可以做的是在指令中设置$ scope变量并在控制器中引用它。
app.directive('passProcess', function (stepData) {
return {
restrict: 'E',
controller: 'UXGroupStepCtrl',
scope: { p: '=' },
templateUrl: '/App/Modules/UXGroup/Views/process.html'
};
});
uxgroups.controller('UXGroupStepCtrl', ['$scope', '$rootScope', '$stateParams',
function ($scope, $rootScope, $stateParams) {
$scope.variable = $scope.p
}
答案 1 :(得分:0)
刚刚发现了另一个问题Injecting resolves into directive controllers 这表明它无法完成,最好的方法是为指令
创建一个单独的控制器