【问题标题】:how to using ember.js to develop multiply platform app如何使用 ember.js 开发多平台应用
【发布时间】:2013-04-08 07:13:16
【问题描述】:

我想用ember.js实现多平台。对于iPhone,智能手机的设计是一样的,而iPad的设计和分辨率是不一样的。 对于手机,它将包含标题栏和 appBody 出口

    "<div class='wrapper'>" +
    "{{outlet topHeaderBar}}" +
    "{{outlet appBody}}" +

"<nav class='nav'>"+

对于 iPad,它将包含以下 iPad 应用程序模板

 "<div class='wrapper'>"+
    "<nav class='nav'>"+
    "{{outlet leftPanel}}" +
    "{{outlet rightPanel}}" +

因此,如何定义我的 AppRoute 以在 CSS 识别设备后呈现不同的插座。 在上述情况下,我认为我可以为 leftPanel 和 rightPanel 重用 topHeaderBar 和 appBody。 但问题是如何在我的 AppRoute 中渲染到不同的模板? 请提出建议。 谢谢你!

【问题讨论】:

  • 我想找到一些ember.js的源代码,它可以帮助识别设备类型,所以最好在AppRoute中定义redender action

标签: css ember.js media-queries


【解决方案1】:

使用 CSS media queries 如下。在您的车把模板中:

<div class="show-ipad">
  {{outlet "ipad-outlet1"}}
  {{outlet "ipad-outlet2"}}
</div> 

<div class="show-iphone">
  {{outlet "iphone-outlet1"}}
  {{outlet "iphone-outlet2"}}
</div> 

在您的样式表中(来自this article) 的媒体查询:

/* iPads (portrait and landscape) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) {
  .show-iphone {
    display: none;
  }
}

/* Smartphones (portrait and landscape) ----------- */
@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 480px) {
  .show-ipad {
    display: none;
  }
}

根据您的需要调整媒体查询(以横向、纵向等方式定位 iPad)。

在 Javascript 中,不要对客户端设备进行任何假设。只需为所有设备渲染所有出口,让 CSS 媒体查询处理显示的内容和隐藏的内容。

【讨论】:

  • 有什么方法可以在js中获取设备类型的标志吗?那么我可以在函数中使用这个标志来渲染不同的模板吗?
  • 您可以使用navigator.userAgent 属性(可能有一些库包装了用户代理检测)。我不确定它有多可靠。
  • 谢谢你,我尝试了你建议的方法,但是在浏览器上,所有模板都会显示。至于navigator.userAgent,它可以购买它似乎只能将代码放在头部。 '
猜你喜欢
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 2016-06-27
  • 2013-06-09
  • 2020-05-24
  • 1970-01-01
相关资源
最近更新 更多