【问题标题】:Pass observable to component through component通过组件将 observable 传递给组件
【发布时间】:2017-07-07 06:57:42
【问题描述】:

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

由于 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。我怎样才能看到更改的文本?

【问题讨论】:

    标签: typescript knockout.js observable


    【解决方案1】:

    首先,您的子组件必须设置为在其 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

    【讨论】:

    • "...设置为在其 viewModel 定义中接受参数" - 这已经存在...大约第二个 - 似乎没有帮助
    • 好的,附上一个小提琴样本
    • 好的。你可以检查这个样本 - jsfiddle.net/bdu9h8t5/2 我需要做什么才能看到更改的文本?我应该订阅每个参数吗?
    • :(我的错。谢谢
    猜你喜欢
    • 2019-08-21
    • 2021-07-18
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 2020-07-18
    • 2018-01-07
    相关资源
    最近更新 更多