通过组件

时间:2017-02-17 16:45:11

标签: typescript knockout.js observable

我有相当困难的结构,所以我需要将可观察变量从主视图传递给组件,它将把它传递给另一个组件。

当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
 }

所有组件中的所有变量都声明为observables

情况就像这个sample。我怎样才能看到更改后的文字?

1 个答案:

答案 0 :(得分: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