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