【问题标题】:passing complex type as param将复杂类型作为参数传递
【发布时间】:2015-09-24 20:04:14
【问题描述】:

Angular js / Angular ui 路由器 0.2.15

我正在尝试使用 $state.go 将复杂的 js 数组传递给控制器 以下是我的代码,您可以帮忙。看起来像下面的代码抛出错误

错误:[$injector:unpr] http://errors.angularjs.org/1.2.28/$injector/unpr?p0=servicesProvider%20%3C-%20services

.js 文件

var services = {complex type};
$state.go("linearOfferProcess", {'services': services});

在我的 route.js 中

state('linearOfferProcess', {
            url: '/linearOfferProcessor',
            templateUrl: '/partials/linear_process.html',
            controller: 'linearProcessController',
            services:
                function($stateParams) {
                  return $stateParams.services;
                }
        }

控制器

angular.module('app').controller('linearOfferProcessController',function($scope) {

    $scope.services = services;

        });

【问题讨论】:

  • 状态定义中没有services 属性..你想在这里实现什么..

标签: angularjs angular-ui-router


【解决方案1】:

不幸的是,我不知道有什么方法可以做到这一点,但你可以尝试使用工厂来做到这一点。我为您制作了一个小型模型,在容器中我存储服务并为每个复杂对象创建一个唯一 ID。因此,您可以随时检索它。

angular.module('app').factory('ServicesContainer', function() {
    var counter = 1;
    return {
        container: {},
        add: function(services) {
            container[counter] = services;

            return counter;
        }
    };
});

angular.module('app').controller('SomeController', function(ServicesContainer, $state) {
    var id = ServicesContainer.add({ complex object });

    $state.go('services', {
        id: id
    });
});

angular.module('app').config(function($stateProvider) {
   $stateProvider.state('services', {
        url: '/{id}',
        onEnter: function(ServicesContainer, $stateParams, $log) {
            $log.info('Services', ServicesContainer[$stateParams.id]);
        }
   });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    相关资源
    最近更新 更多