簡體   English   中英

Ember.js-僅轉換模板顯示以使用視圖

[英]Ember.js - Convert template only display to use a view

我只是從Ember.js開始。 我已經將Ember Data與我的Rails后端通信,並且當前正在使用基本的車把模板顯示數據。 數據正在呈現。 腳本中的當前代碼如下:

模型:

App.Post = DS.Model.extend
  title: DS.attr('string')
  text: DS.attr('string')
  imageUrl: DS.attr('string')

路由:App.Router.map-> @route'posts',路徑:'/'

App.PostsRoute = Ember.Route.extend
  model: -> App.Post.find()

posts.handlebars:

<div id="masonry-container" class="transitions-enabed infinite-scroll clearfix centered">
  {{#each controller}}
    <div class="col2 box">
     <h3>{{title}}
     <img {{bindAttr src="imageUrl"}} >
     <p class="text">
      {{text}}
     </p>
   </div>
 {{/each}}
</div>

application.handlebars

{{outlet}}

該模板將在整個應用程序的多個地方使用。 它還使用了砌體,需要在呈現內容之后將其初始化,最后我需要實現無限滾動,盡管這已經超出了我自己的位置。

現在,我想采用以上內容並為其創建視圖。 到目前為止,我已經嘗試了以下方法。

路由:

App.Router.map ->
  @route 'posts', path: '/'

App.PostsRoute = Ember.Route.extend
  setupController: ->
    @controllerFor('posts').set('content'. App.Content.find())

控制器:

App.PostsController = Ember.ArrayController.extend()

視圖:

App.PostsView = Ember.View.extend
  layoutName: 'appLayout'
  templateName: 'posts'
  controller: 'App.PostsController'

模板:

app_layout.handlebars

...layout mark up...
 <div id="container">
   {{yield}}
 </div>
...more layout mark up...

posts.handlebars:

<div id="masonry-container" class="transitions-enabed infinite-scroll clearfix centered">
  {{#each controller.content}}
    <div class="col2 box">
     <h3>{{title}}
     <img {{bindAttr src="imageUrl"}} >
     <p class="text">
      {{text}}
     </p>
   </div>
 {{/each}}
</div>

application.handlebars

{{view App.PostsView}}

使用此代碼,布局將呈現,但任何帖子都不會。 似乎未設置控制器的content屬性,但是我不確定是否可能缺少其他內容。 任何幫助,將不勝感激。

我想通了。 問題在於調用{{view App.PostsView}} 將我的application.handlebars改回使用{{outlet}}解決了這個問題。 似乎嘗試顯式渲染視圖會導致問題,並且通過使用正確的命名約定定義視圖,Ember會自動將其選中。 在事后看來,考慮到Ember方式,這很有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM