2014-02-14 107 views
1

我需要一些關於ember上{{link-to}}的信息。我做了一些試驗,有件事我真的不明白..Ember.js動態鏈接

例子:

我有一個博客與不同的崗位像:

App.Router.map(function() { 
    this.resource('login', { path: '/' }); 
    this.resource('home'); 
    this.resource('posts', function(){ 
     this.resource('post', { path: '/:post_id' }, function(){ 
      this.route('update'); 
     }); 
    this.route('create'); 
    }); 
}); 

比方說,我有這樣的模板:

<script type="text/x-handlebars" data-template-name="enquiries"> 
    <table> 
     <thead> 
      <tr> 
       <th>id</th> 
       <th>type</th> 
       <th>name</th> 
       <th>last update</th> 
       <th>Detail</th> 
      </tr> 
     </thead> 
     <tbody> 
     {{#each post in model}} 
      <tr> 
       <td>{{post.id}}</td> 
       <td>{{post.type}}</td> 
       <td>{{post.name}}</td> 
       <td>{{post.updatedAt}}</td> 
       <td>{{#link-to 'post' post}}View{{/link-to}}</td> 
      </tr> 
     {{/each}} 
     </tbody> 
    </table> 
</script> 

我簡單的文章範本

<script type="text/x-handlebars" data-template-name="post"> 
    <div class="post-info"> 
     <button {{action "update"}}>Update</button> 
     <table> 
      <tr> 
       <td>{{title}}</td> 
      </tr> 
      <tr> 
       <td>{{content}}</td> 
      </tr> 
      <tr> 
       <td>{{author}}</td> 
      </tr> 
     </table> 
    </div> 
</script> 

這些鏈接一個動態的,並沒有對所有的人都好網址例如localhost /職位/ 1或2等..

當我點擊鏈接,沒有什麼happend。我必須有{{oulet}}來顯示它。但我的問題是,它顯示在同一頁上我的表格(下面),但我只想顯示帖子模板。

我有些麻煩要理解爲什麼,還有什麼是主要目的插座在我的情況...

謝謝。

回答

2

顯示在posts模板中的原因是因爲您的Router對此進行了定義。如果你想有一個單獨的頁面,試試這個:

App.Router.map(function() { 
    this.resource('login', { path: '/' }); 
    this.resource('home'); 
    this.resource('posts'); 
    this.resource('post', { path: 'posts/:post_id' }, function(){ 
     this.route('update'); 
    }); 
    this.route('create'); 
}); 

當你有一個嵌套的資源,在{{outlet}}助手指定在嵌套模板將被渲染。

+0

謝謝!這非常有幫助! :) – SuperMarco