问题标签 [ember-router]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1280 浏览

ember.js - Ember pre4 - 嵌套路由

我试图了解如何使用嵌套路由。

我的代码:

我正在尝试通过以下方式访问 Bob 页面:

我错过了什么?

jsbin

谢谢。

0 投票
3 回答
7133 浏览

ember.js - Ember.js 排序和过滤父路由中 hasMany 关系的子级

更新#2

我发现当我将过滤逻辑重构为在 PostController 中的复合计算属性中而不是在单个路由中时,我能够让它工作。该解决方案最终依赖于由特定 #linkTo 路由操作设置的单个动态变量,该操作触发 PostController 计算属性中的过滤更改。我有很多工作要赶上,所以我现在不能发布这个特定问题的解决方案,但是当我可以的时候,我会在下面详细解释解决方案。现在我已经将@twinturbo 的答案标记为正确,因为他在下面给出了部分但非常有用的指导。再次感谢大佬!!非常感激!!

更新#1

最新的小提琴位于http://jsfiddle.net/aZNRu/14/,在 @twinturbo 的帮助下,在其 Post 父控制器中对 Comments 的“rank”属性进行排序,以及基本过滤。在过滤路线中并创建新评论时,仍然存在无法自动更新视图的问题。

原始问题

我看到有人谈论将可排序的 mixin 与过滤功能相结合,但是现在,正如您在我的jsfiddle 示例中看到的那样,我在排序和过滤方面都遇到了问题:

1)我不知道如何在其父控制器中按特定子属性排序。如果我们有:

我希望能够通过它的“排名”属性按升序对每个帖子的评论进行排序。我想做类似的事情:

但一方面,我认为 sortProperties 仅适用于 arrayControllers,而且我认为它的工作深度不能超过一层。我怎么能做到这一点?

2)第二个问题是在过滤路由时没有自动更新视图。例如,如果您查看 jsfiddle 并通过单击“Active Comments”进入活动过滤路由,您将获得对当前数据的良好过滤效果。但是,如果您保留在活动路线中并通过单击“添加新评论”创建一条处于活动状态的新记录,则该记录不会自动呈现在“活动”下,并且仅当您单击另一条路线然后返回该路线时才会出现。

我是在路由中错误地设置路由过滤还是在模板中引用错误?

您可以就这些问题提供任何见解,我们将不胜感激!

0 投票
1 回答
1751 浏览

ember.js - EmberJs:如何使用 connectOutlet

我创建了一个简单的测试,我在其中尝试使用 connectOutlet。但是,渲染的并不多。这是我的测试代码:http: //jsfiddle.net/jeanluca/53dpA/

只是总结应用程序。我认为问题出在以下代码中

任何建议这段代码有什么问题?

此外,在我在网上找到的几乎所有示例代码中,我看到 App.Router 已定义

因为 ember-latest App.Router 已经定义,我认为这是定义路由器的旧方法?

0 投票
1 回答
1227 浏览

ember.js - 如何在没有 controller.get('view') 的情况下使操作影响同级视图?

快速上下文:应用程序视图有 2 个出口。一个用于工具栏。另一个用于可路由的“主”视图层次结构。

我需要工具栏中的一些按钮来触发“主”视图中的事件。不更新任何模型中的任何数据。我只是指示它触发对视图呈现的绘图库的一些更改。清除画布,重置缩放值等。

在 1.0 pre2 和更早的版本中,我使用了操作和 router.get('someController.view') 来访问我想要的视图并触发操作/方法/事件。几乎不是应用程序设计的巅峰之作,但它运行良好。

这个选项现在已经消失了,我无法找到一个好的选择。在不在子/父层次结构中的视图之间进行通信时,我应该使用什么机制?我想出的一切都很笨拙,并引发了我的感觉,即“Ember 有更好的方法”

简而言之,我想要:

  • 触发事件的工具栏按钮
  • 对此做出反应并对其自身部分执行一些更新的主视图。
  • 不会像通过路由那样在 Ember 的意义上重新渲染的主要视图。它使用绘图库并将其所有属性和行为集成到 Ember 模型和控制器中不会很有趣。
  • 工具栏和主视图共享一个父视图,但位于不同的“分支”上。

我正在考虑的不良选择:

工具栏在很大程度上是一个应用程序级别的问题,但它确实有一些需要指示特定视图的按钮。我在 Ember 中看到的一个选项是将工具栏嵌套在“主”视图下。对于它的其他一些功能,这似乎是错误的。

通信可以由一个控制器(甚至可能是一个模型)来处理,该控制器将保存工具栏设置的属性,并且“监听”视图会对其做出反应并重置其值。这听起来像是对控制器和模型目的的滥用,并且像是一个非常糟糕的事件监听器设置。

我可以将绘图库作为 App.Drawing 之类的全局应用程序,但这似乎也很糟糕。这也意味着操作仍然无法使用视图中的任何数据来更新绘图库。

有什么建议么?

0 投票
1 回答
2213 浏览

ember.js - 路由器中是否有类似“didInsertElement”的钩子?

使用第三方框架,我想设置选定的值。

在 ember.js 新路由器中将视图插入 DOM 后是否有任何钩子?

0 投票
1 回答
3231 浏览

ember.js - 如何将模型路由名称项传递给 ember.js 模板中的 linkTo

如何动态地将路由名称传递给 {{linkTo}}?

例如,给定以下代码:

这些模板:

这些模型具有以下夹具数据:

如何将 navItemPath 传递给 {{linkTo}} 助手?在此代码段中:

ember 抱怨它找不到“navItemPath”路线,就像它在字面上寻找它一样。如果我将其替换为有效的文字路线,例如:

ember 将按预期呈现带有 navItemName 的 linkTo,所以我知道控制器正在向它传递正确的数据,但当然所有路由都是愚蠢的。我错过了一些明显的东西吗?

0 投票
0 回答
304 浏览

ember.js - 如何使用 Ember 的 V2 路由器保存路径并返回

所以,我对 Ember 的新路由器有一些问题。我正在尝试保存并稍后返回给定动态段的当前路径,所以我的网址可能看起来像

然后可以分支到

等等。我需要一种方法来返回最近的路线。Ember 指南在这里有一个方法:

http://emberjs.com/guides/routing/redirection/

这种方法的问题在于,通过创建“/choose”路线并将其分配给“/”,这会覆盖标准的“/inventory/vehicle/1001”路线。例如,如果我要尝试像这样创建一个 linkTo 车辆:

然后 Ember 会抛出错误,因为“车辆”路线不再存在。相反,它必须设置为:

哪个有效,激活 VehicleChooseRoute 和一切。除了,由于“vehicle.choose”在技术上是“vehicle”的子项,#linkTo 只有在当前路线为

它会立即重定向到最新的过滤器,所以它基本上永远不会打开。所以基本上我试图找出解决这个问题的方法。我尝试将“vehicle.choose”的路径更改为标准路径(#/inventory/vehicle/1001/choose),这样它就不会覆盖“vehicle”路线,然后像这样设置 VehicleRoute:

但是由此产生的问题(除了感觉相当黑客之外)是重定向替换了通常由“车辆”呈现的整个模板,所以我只得到子视图。所以这不是一个选择。

0 投票
2 回答
281 浏览

ember.js - 1.0.0-Pre.4 中的路由器基础知识 - 在当前版本中编写路由器的正确方法是什么?

我讨厌问这样一个新手和模糊的问题,但我想肯定还有其他人的大脑也即将爆炸。我看到了相关的问题,但没有一个能直接解决我的困惑。

我刚刚被介绍给 Ember.js,我正在尝试学习路由器的基础知识,但我找不到两个就如何完成达成一致的来源。我怀疑我是在不稳定的过渡期间跳进去的。我正在使用最新的 1.0.0-Pre.4 版本。

我能想到的最好的,Router 是新机制,并且可能取代 StateManager - 是吗?然而,网站上 1.0.0-Pre.4 API 下列出的类甚至没有列出 Router 对象,指南也没有提到它......但是,当我使用示例代码时,我没有收到来自 javascript 的抱怨扩展 Em.Router。

好的很酷,但是它会在路由器成员“transitionTo”上出现问题,该成员存在于许多演示项目中,但在当前版本中无法识别。

所以,我想我要问的不是一个直接的问题,而是我在矛盾信息的海洋中寻找一个基础点。

如果从 Ember.js 开始,因为它现在是现在(1.0.0-pre.4),没有历史可以抗衡,我应该看什么路由机制,是否有任何教程或简单的示例应用程序可以演示和针对这个版本的库运行?您能否证实我怀疑有关路由的文档已过时?

Ember.js 有很多东西要学,如果我想弄明白,我需要知道什么该忽略,什么该拥抱。

谢谢你。

0 投票
2 回答
324 浏览

javascript - Ember.js(pre4)数组控制器不保持状态

编辑 2013-03-02

这似乎在 RC1 中得到解决


在之前的 Ember.js 版本中,控制器会保持分配给它们的状态,但这似乎是 Pre4 中的一个问题。

所以如果我有这个控制器

由于某些无法解释的原因,内容被覆盖。我不想使用 ember data,但似乎我被迫朝那个方向发展。

这个JS Fiddle举例说明了这个问题。

这是怎么回事?我该如何阻止它,或者这是否根深蒂固于余烬中的固执己见,以至于我需要接受它并顺其自然?


编辑

更进一步,即使您覆盖了钩子,似乎设置的任何内容model都将设置为该值。contentsetupController

例如:

UsersController.content遗嘱以价值结束['This','Shouldnt','Be','Assigned']

看到这个更新的小提琴

0 投票
1 回答
3934 浏览

ember.js - 如何在 EmberJS 的 2.2 路由器中使用动态段?

我不知道如何在 EmberJS 的新路由器 API 中创建具有动态段的路由。我已经花了一个星期的时间尝试了很多东西,但它不起作用。我对自己感到非常沮丧,因为我已经多次阅读了文档、API 和源代码,但无法弄清楚如何完成这项工作。我渴望得到帮助。

我正在尝试实现以下路线:

  • /profile/:userId -> 索引
  • /profile/:userId/activity -> 活动页面
  • /profile/:userId/...

我的路由器是这样设置的

然后,每当我尝试与linkTo帮助程序链接时,都会收到以下错误:Uncaught More objects were passed than dynamic segments

如果我不包含该user对象,那么我会收到另一个错误Uncaught Error: assertion failed: Cannot call get with 'id' on an undefined object.(显然是因为没有对象可以获取其 ID)

如果有任何帮助,这是我的路线声明