如何将数据传递到通过$ state.go(controller.state)打开的控制器?

时间:2016-09-05 14:33:50

标签: angularjs model-view-controller

我有一些对象。当我点击名称时,它应该打开md-content页面并配置文件夹。情况是下一个:当我点击名字时 - 打开conf。带有FolderConfigController的页面,但我想将文件夹对象发送到FolderConfigController以使用它。

folders = [{name: name1, id:id1},{name: name2, id:id2},{name: name2, id:id2}]

在lefsidenav中列出:

<div ng-repeat="folder in folders" ng-click="vm.openConfigPage()">{{folder.name}}
在folderController中:

vm.openConfigPage = openConfigPage;
function openConfigPage() {
    $state.go('triangular.config');
}

FolderConfigController.config:

(function() {
'use strict';

angular
    .module('app.components.work')
    .config(moduleConfig);

/* @ngInject */
function moduleConfig($stateProvider) {

    $stateProvider
    .state('triangular.config', {
        url: '/work/folder/config',
        templateUrl: 'app/components/work/folder-config/folder-config.tmpl.html',

        controller: 'FolderConfigController',
        controllerAs: 'vm',
    });

}
})();

可以制作类似的东西:

function openConfigPage(folder) {
    $state.go('triangular.config');
    FolderConfigController.folderObject = folder;
}

它是如何以正确的方式工作的?

1 个答案:

答案 0 :(得分:1)

你可以使用这样的状态参数:

function moduleConfig($stateProvider) {

    $stateProvider
    .state('triangular.config/:id/:name', {
        url: '/work/folder/config',
        templateUrl: 'app/components/work/folder-config/folder-config.tmpl.html',

        controller: 'FolderConfigController',
        controllerAs: 'vm',
    });

}
})();

然后当你转换到那个状态时,你可以设置参数

function openConfigPage(folder) {
    $state.go('triangular.config', {"name": folder.name, "id": folder.id});
}

并将$ stateParams注入FolderConfigController控制器以获取对name和id参数的访问权

.controller('FolderConfigController ', function($scope, $stateParams){

   console.log($stateParams):

});