2016-04-03 18 views
1

我想現值在我app.js視圖模型到自定義元素綁定,但我似乎無法得到時images值從無極設置bind正常工作。如何使用承諾將應用的視圖模型綁定到自定義元素?

app.js

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

    . . . 

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

我的自定義元素,如app.html引用:

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

我的自定義元素的視圖模型,featured-image.js

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

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

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

this.images總是undefined。如果我將images設置爲硬編碼數組,它將按預期工作。我究竟做錯了什麼?

回答

3

嘗試在activate返回承諾:

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

這保證了當的承諾已經完成你的看法就會被激活。但是,我認爲即使沒有return也應該可以工作,因爲數組中的任何更改都會傳播到綁定它的所有視圖。也許另一件事是造成這個問題。

+1

非常有趣。這有效,但我想明白爲什麼。文檔中是否有參考? – Brandon

+0

是的,有。 http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.1.4/doc/article/cheat-sheet/7「如果你想在你的系統之前執行自定義邏輯,實現這個鉤子可以選擇返回一個承諾,告訴路由器等待綁定並附加視圖,直到完成工作。「 –

+0

Derp - 非常感謝您的幫助!我很感激。 – Brandon

相關問題