如何在具有角度ui-router的状态之间传递数据?

时间:2016-06-15 20:31:06

标签: javascript angularjs

我原本不打算用ui-router进行这个项目(2天前刚刚了解它),所以我对此很新。

我对这个问题的看法是:

  1. 图像列表的模板,使用ng-repeat显示,并从控制器中调用的服务获取img-src。该服务从json文件获取源。

     
  2. 图像编辑器的模板。此控制器应获取在图像列表中单击的图像的图像源。

  3. 如何将图像源从一个状态(图像列表)传递到另一个状态(图像编辑器)?

    当我假设我不使用ui-router及其状态时,我正在使用服务来做到这一点。我如何处理各州?

3 个答案:

答案 0 :(得分:3)

所以,我发现了一种简单有效的数据传递方式,这对我所有的案例都有效。 (包括与原问题中提到的情景不同的情景)

在第一个状态state1的控制器中,我可以调用函数

$state.go('state2', {id: self.value} );

在state2中,我可以通过以下代码获取值:

this.state2value = $state.params.id;

因此可以将value从一个状态传递到另一个状态,并通过状态参数检索它。

注意:你应该将$ state和$ stateParams注入两个控制器。

答案 1 :(得分:1)

我认为您可以将图像ID从状态1传递到状态2,并将其置于状态2控制器中:

$stateProvider
.state('state', {
    url: "/test/:id",
    templateUrl: 'template.html',
    controller: function ($stateParams) {
        console.log($stateParams.id);
    }
})

以及第一页ui-sref="state({id:42})"

中的链接

答案 2 :(得分:1)

服务似乎仍然是您在两个州之间共享信息的最佳选择。如果您需要服务中的任何状态信息,您可以将$ state注入其中:

......
.service('SomeService', [
      '$state', 
        function ( $state ) {
          .......