如何在解析时获取状态数据

时间:2014-05-05 15:11:24

标签: angularjs angular-ui-router

我将ui-router用于AngularJS。

我已经定义了一些像这样的州。

    $stateProvider.state(
        {
            name:       'home',
            url:        '^/?page&find',
            controller: controller,
            data:       new cgTag.States.StateData('home', type),
            resolve:    resolve
        }
    );

我在执行状态控制器之前使用解析从服务器获取一些JSON,但我需要解析函数中此状态的state.data对象。

我的解析器就像这样

function _resolve($http, $state, $stateParams)
{
    var data = $state.current.data;
    // ^^^^ this is the wrong state
    return $http.post('/json/templates/layout', data);
}

var resolve = {
    'layoutResponse': ['$http', '$state', '$stateParams', _resolve]
};

$stateProvider.state(
    {
        name:       'home',
        url:        '^/?page&find',
        controller: controller,
        data:       new cgTag.States.StateData('home', type),
        // ^^^ I need this object in my resolve function.
        resolve:    resolve
    }
);

我的问题是$state.current不是正在转变的州。它来自州。

如何在解析状态下获取解析函数中的state.data对象?

1 个答案:

答案 0 :(得分:4)

您可以通过在resolve函数中调用this.data来获取当前状态的数据。

.config(function ($stateProvider) {
  $stateProvider
  .state('someState', {
    url: '/',
    resolve: {
      resolveThis: function () {
        alert(JSON.stringify(this.data)); // alerts you with delicious bacon
      }
    },
    data: {
      bacon: 'delicious'
    }
  });
});

http://plnkr.co/edit/OMc5ilofyA4sv66JMQe9?p=info