Angular js - 解析不将参数传递给控制器​​

时间:2016-03-06 13:05:17

标签: javascript angularjs

我遇到的问题是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没有传递给控制器​​的原因吗?

任何帮助将不胜感激。

由于

1 个答案:

答案 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);

     }
   ]);