2016-04-03 11 views
1

Özel bir elemana benim app.js görüntüleme modelinde bir değer mevcut bağlamak istiyorum ama images değeri bir Promise'in den ayarlandığında bind düzgün çalışması için görünmektedir olamaz. Uygulamanın görünüm modelini bir söz kullanarak özel öğeye nasıl bağlarsınız?

app.js

:

@inject(Api) 
export class App { 
    constructor(api) { 
     this.api = api; 
    } 

    . . . 

    activate() { 
     this.api.mockGet('gallery').then((images) => this.images = images); 
    } 
} 

Benim özel öğe, app.html başvurulan olarak:

<featured-image images.bind="images"></featured-image> 

Benim özel öğenin görünüm modeli, featured-image.js:

import {containerless, bindable} from 'aurelia-framework'; 

@containerless 
export class FeaturedImage { 
    @bindable images = null; 

    attached() { 
     console.log(this.images); 
    } 
} 

this.images hep undefined olduğunu. Sabit kodlanmış bir diziye images kurarsam, beklendiği gibi çalışır. Neyi yanlış yapıyorum?

cevap

3

activate umut dönmek için deneyin: Bu söz tamamlandığında görünümünüzü aktive olmasını sağlar

activate() { 
    return this.api.mockGet('gallery') 
     .then((images) => this.images = images); 
} 

. Bununla birlikte, return no'lu bile olsa çalışması gerektiğini düşünüyorum, çünkü dizideki tüm değişiklikler onu bağlayan tüm görünümlere yayılacaktır. Belki başka bir şey soruna neden oluyor.

+1

Çok ilginç. Bu işe yarıyor ama nedenini anlamak isterim. Dokümanlarda bir referans var mı? – Brandon

+0

Evet, var. http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.1.4/doc/article/cheat-sheet/7 "Eğer hemen önce özel mantık yapmak istiyorsanız bu kancayı uygulayın. view-model görüntülenir. İsteğe bağlı olarak, yönlendiriciye işinizi bitirinceye kadar görünümü bağlamak ve bağlamak için beklemesini söylemek için bir söz verebilirsiniz. " –

+0

Derp - yardım için çok teşekkür ederim! Bunu takdir ediyorum. – Brandon

İlgili konular