2016-09-12 4 views
0

Я новичок в EmberJs.ember link-to от компонента

Я попытался связать с компонентом «список-фактуры» для выставления счета.

счета-list.hbs

{{#each invoices as |invoice|}} 
    <tr> 
    <td>{{invoice.kdnr}}</td> 
    <td>{{invoice.rnr}}</td> 
    <td>{{invoice.invoiceId}}</td> 
    <td>**{{#link-to 'invoice' invoice.invoiceId}}Click here{{/link-to}}**</td> 
    </tr> 
{{else}} 
    <p>No datas</p> 
{{/each}} 

invoices.hbs

{{invoices-list invoices=model}} 

router.js

Router.map(function() { 
    this.route('invoices'); 
    this.route('invoice', { path: '/invoice/:invoice_id' }); 
}); 

Моя проблема в том, шаблон не будет отображаться, и я получаю ошибку: «props.parentView.appendChild не является функцией»

Что не так?

Спасибо за помощь. Fabian

+0

'this.route ('invoice', {path: '/ invoice /: invoiceId'}); вместо' this.route ('invoice', {path: '/ invoice /: invoice_id'}) ; .. это может не решить вашу проблему, но я подозреваю, что вы получаете параметр invoiceId в маршруте счета-фактуры. может быть проверено это [twiddle] (https://ember-twiddle.com/8489aa289f7fe61165a81fe260acd28f?openFiles=router.js%2Ctemplates.components.invoices-list.hbs&route=%2Finvoice%2F2) – kumkanillam

+0

продемонстрировать свою проблему с помощью [ember-twiddle ] (https://ember-twiddle.com), чтобы мы могли точно исправить вашу проблему. так как ваш код должен работать afaik. – kumkanillam

ответ

1

Позвольте мне дать вам первый пример как использовать Link-к

Пусть это ваш Route.js

Router.map(function() { 
    this.route('photos', function(){ 
    this.route('edit', { path: '/:photo_id' }); 
    }); 
}); 

и это приложение/шаблоны/photos.hbs

<ul> 
    {{#each photos as |photo|}} 
    <li>{{#link-to "photos.edit" photo}}{{photo.title}}{{/link-to}}</li> 
    {{/each}} 
</ul> 

тогда оказывается HTML будет

<ul> 
    <li><a href="/photos/1">Happy Kittens</a></li> 
    <li><a href="/photos/2">Puppy Running</a></li> 
    <li><a href="/photos/3">Mountain Landscape</a></li> 
</ul> 

так в вашем случае это маршрут

Router.map(function() { 
    this.route('invoices'); 
    this.route('invoice', { path: '/invoice/:invoice_id' }); 
}); 

, то вы можете использовать этот

{{#each invoices as |invoice|}} 
    <tr> 
    <td>{{invoice.kdnr}}</td> 
    <td>{{invoice.rnr}}</td> 
    <td>{{#link-to 'invoice' invoice}}{{/link-to}}</td> 
    </tr> 
{{else}} 
    <p>No datas</p> 
{{/each}} 

другой пример, чтобы уточнить:

//Route.js 
this.route('contacts'); 
this.route('contact', { path: 'contacts/:contact_id' }); 

//Contacts.hbs 
    {{#each model as |contact|}} 
     <tr> 
      <td>{{link-to contact.name 'contact' contact}}</td> 
      <td>{{link-to contact.email 'contact' contact}}</td> 
      <td>{{contact.country}}</td> 
     </tr> 
    {{/each}} 

Надеется, что это работает для вас. more info.

+0

Здравствуйте, спасибо за ответ. Но у меня всегда есть ошибка. –

+0

У вас такая же ошибка? нужно увидеть код. – Majid

+0

https://ember-twiddle.com/630b8e0b575ebd26967ab68502539917?route=%2Finvoices thats run .. Но локальный не..и не понимаю этого –

Смежные вопросы