这是一个非常新手的问题。但是,在EmberJS中,我发现这两种方法都适用于链接到我的应用程序中的博客页面。
<p>{{#link-to 'posts'}} See my blog{{/link-to}}</p>
<a href="posts"> See my blog</a>
在EmberJS中使用{{link-to}}会更好吗?怎么样?
答案 0 :(得分:5)
不同之处在于Window w = context.getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
组件将导航到当前运行的Ember应用程序中的指定路由,而{{link-to}}
将向该位置执行新的浏览器请求并重新启动您的Ember应用程序那条路。您应该使用<a href="posts">
,因为您将使用Ember内部在单页应用程序中导航,这将是一种更流畅的用户体验。
虽然他们都可以工作,但仔细观察您的浏览器,您会看到锚标记将为您提供页面刷新并重新启动您的Ember应用程序(尽管位于正确的位置)。使用{{link-to}}
会感觉更快,因为Ember通过javascript呈现新页面而不是在页面刷新后重新启动。这是在单页应用程序中导航和从外部页面跳转到SPA之间的区别。
虽然Ember会在运行时渲染锚标记代替{{link-to}}
,但它会插入以停止默认的锚标记行为。文档解释如下:
默认情况下,
{{link-to}}
组件会阻止默认浏览器 通过调用{{link-to}}
进行操作,因为这种动作冒泡了 通常在内部处理,我们不想使用浏览器 一个新的URL(例如)。
(来自https://emberjs.com/api/classes/Ember.Templates.helpers.html#toc_allowing-default-action)
此外,使用preventDefault()
组件,您可以将模型直接传递到路径中。这有点先进,但Ember指南有一些很好的例子。
https://guides.emberjs.com/v2.13.0/templates/links/