我遇到的问题是angular
没有将resolve
参数传递给controller
。
route.js
var routingModule = require('../'); -- routing module is already defined, just injecting new routes
routingModule.config(myconfig);
myconfig.$inject = ['$stateProvider'];
function myconfig($stateProvider) {
$stateProvider
.state('home.clone', {
abstract: true,
url: '/clone',
template: '<ui-view/>'
})
.state('home.clone.dummy', {
url: '/dummy?channelId',
templateUrl: '/templates/clone_dummy.html',
resolve:{
simpleObj: function(){ ---> it is not passing to controller
return {value: 'simple!'};
}
},
controller: 'makingCloneDummyCtrl', ---> it is defined in another module
controllerAs: 'rv',
date: {
title: "Making Clone",
}
})
下面是相关的控制器,它在另一个期望simpleObj
controller.js
angular.module('somemodule', [])
.controller('makingCloneDummyCtrl', [
'$scope', 'simpleObj',
function ($scope, simpleObj)
{
var self = this;
console.debug(simpleObj); ---> It prints function
console.debug(simpleObj.value); ---> undefined
}
console.debug(simpleObj)打印在函数
下面function Resource(value) {
shallowClearAndCopy(value || {}, this);
}
而
console.debug(simpleObj.value)打印undefined
我不明白我错过了什么。
控制器可能存在于另一个模块somemodule
中,而不是路由模块。这是simpleObj
没有传递给控制器的原因吗?
任何帮助将不胜感激。
由于
答案 0 :(得分:0)
正如评论中提到的,你错过了注射阵列中的逗号。
这是一个有效的plunker with a simplified setup。
只需添加逗号就可以了。
angular.module('somemodule', [])
.controller('makingCloneDummyCtrl', [
'$scope', // Comma added here
'simpleObj',
function($scope, simpleObj) {
var self = this;
console.debug(simpleObj);
console.debug(simpleObj.value);
}
]);