2017-02-17 81 views
0

我有相當困難的結構,所以我需要將可見的變量從主視圖傳遞給組件,組件會將其傳遞給另一個組件。通過組件可以通過組件觀察

由於observable從ajax調用中獲取數據,所以在開始時它在最後一個組件中是未定義的。

如何正確傳遞它?


<component1 params="data: $component.data"></component1> 

.ctor

constructor(params: any) { 
    this.data = params.data; 
} 

.ctor

constructor(params: any) { 
    this.data = params.data; // here it is undefined 
} 

中的所有組件的所有變量重新宣佈爲觀察對象


情況類似於此sample。我怎樣才能看到改變的文字?

回答

0

首先,您的子組件必須設置爲接受其viewModel定義中的參數。

ko.components.register('myComponent', { 
    viewModel: function(params){ 
     var self = this; 

     self.myObservable = params.data; 
     return this; 
    } 
    ... 

然後,每本duplicate question,你可以傳遞參數,大括號,如:

<myComponent params="{ data: $data.myParameter}"></myComponent> 

工作例如:jsFiddle

+0

」 ......設立接受其視圖模型定義的參數「 - 這已經存在了......關於第二個 - 似乎沒有幫助 – demo

+0

好吧附上了一個樣品提琴 –

+0

好吧。你能檢查這個示例 - https://jsfiddle.net/bdu9h8t5/2/我需要做什麼才能看到更改的文本?我應該訂閱每個參數嗎? – demo