2015-09-10 50 views
1

我最近在egghead.io上观看了一个视频,演示了如何进行多个命名视图(https://jsbin.com/nanifo/7/edit?html,js,output)。我有一个应用程序,我需要将某些参数传递给命名视图。如何将参数传递给同级ui路由器命名的视图?

组态我的应用程序如下图所示,可以将参数p1和p2,以“测试”中被传递指出:

angular.module("testapp",['ui.router']) 
.config(function($stateProvider) { 
.state("test", { 
       abstract: true, 
       url: "/test", 
       templateUrl: "app/template/testabstract.html", 
       controller: "TestAbstractController", 
       params: { 
        p1: null, 
        p2: null 
       } 
      }) 
      .state("test.view1", { 
       url: "/view1", 
       templateUrl: "app/template/testview1.html", 
       controller: "TestView1Controller" 
      }) 
)}; 

见工作jsbin这里:https://jsbin.com/cedeqa/12/edit?html,js,output

原来,当我改变了国由于我把参数放在错误的地方,所以它没有工作:

angular.module("testapp",['ui.router']) 
.config(function($stateProvider) { 
.state("test", { 
       abstract: true, 
       url: "/test", 
       views: { 
        "[email protected]": { templateUrl: "app/template/footer.admin.html" }, 
        "": { 
         templateUrl: "app/template/adminabstract.html", 
         controller: "AdminAbstractController", 
         params: { 
          p1: null, 
          p2: null 
         } 
        } 

       }, 
      }) 
      .state("test.view1", { 
       url: "/view1", 
       templateUrl: "app/template/testview1.html", 
       controller: "TestView1Controller" 
      }) 
)}; 

然而,实验(和重读该文档)告诉我哪里params真的需要去:https://jsbin.com/jijuca/4/edit?html,js,output

我想,我已经设法使它工作的方式,我想它...但是,我应该这样做吗?在“兄弟姐妹”之间共享数据有更好的方法吗?

+0

HTML究竟发生了什么? –

+0

感谢您的评论。我将用索引更新问题,并尝试将jsfiddle放在一起。这是我的灵感:https://egghead.io/lessons/angularjs-ui-router-named-views –

+0

努力拼凑一个例子。一旦我得到一个工作jsbin方法#1的例子,并强烈尝试方法#2 http:// stackoverflow。com/questions/32514809 /从jsfiddle-in-jsbin中重新创建一个示例 –

回答

1

您正在传递一个抽象状态多个视图。本质上,这不是抽象国家打算如何使用。文档说

“抽象状态可以有子状态,但不能被激活自己。'抽象'状态只是一个不能转换到的状态。当它的一个后代被激活时,它被隐式激活“。

https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views

我怀疑的是,这就是为什么你的控制器是打破。通常,抽象状态用于指定所有子视图的URL,变量和行为。例如,您可能会使用抽象状态来表示URL中的CRUD。所以,如果你正在创建CRUD狗,你的网址可能看起来像下面这样:

/狗/指数

/狗/新

/狗/ {ID} /编辑

/狗/ {ID} /删除

在上面的例子中,你将有狗一个抽象类,然后子国dog.index dog.new,等等等等

所以,如果你传递一个抽象类多个视图,你没有使用它的目的。这些观点应该是对某种抽象继承状态的“儿童”状态。

这些观点看起来像巨大的候选人为兄弟国家彼此。我希望这有帮助。如果我完全不了解您的问题,或者有人可以在某处指出我已经完成了这些,请告诉我!

+0

感谢您的注意!我认为你在正确的轨道上。我试图把小提琴放在一起来说明我想要完成的事情。我会尽力为每个案例提供小提琴。它的工作情况可能是某种意外... –

+0

我认为这是一个非常好的解释。但是,我的问题有点不同。我认为我的错在于我,因为原来的问题根本不是很清楚。我希望修改后的问题更清楚。你帮我重述了这个问题 - 我试图在兄弟国家之间传递数据。道歉。 –

相关问题