【问题标题】:knockout accessing a parent observable in child function淘汰访问子函数中的父可观察对象
【发布时间】:2015-10-09 02:28:40
【问题描述】:

在给定视图模型的淘汰赛中

 function Model() {
     var self = this;
     this.mycollection = ko.observableArray("")
     this.foo = ko.observable("foo");
     ....
  }

在可观察数组中如何访问父级?

 function mycollection (bar){
           var self = this;
           this.bar = ko.observable(bar);
           this.myFunction = function() {
              var foo = $parent.foo();
              ...
              }
           }

是 self.$parent.foo 吗? 还是在调用函数时需要以某种方式传递它?

 <div class="modal-body" data-bind="foreach: selectedFilteredPoCollection">
    ....
     <button type="button" class="btn btn-default" 
                                   data-bind=" click:  myFunction($parent.foo()) </button>

  </div>

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    bind它到你的点击函数。

    <button type="button" data-bind="click: myFunction.bind($parent, $parent.foo)"></button>
    

    【讨论】:

      【解决方案2】:

      您需要将点击处理程序包装在一个函数中,如下所示:

      <button type="button" 
              class="btn btn-default" 
              data-bind=" click: 
                   function(){ 
                       myFunction($parent.foo());
                   }"> </button>
      

      请参阅此处的注释 2:http://knockoutjs.com/documentation/click-binding.html

      【讨论】:

      • 是的,它起作用了(我会在它允许时将其标记为已回答。只是为了清楚孩子无权访问父母?例如,如果我正在做一个 ko.computed子中的函数我无法引用父级中的内容?
      • 不确定你在问什么。您是在问您是否可以从 myFunction 中访问父数据?只有你把它传进去。
      • 我在 mycollection 中询问 mycomputed=ko.computed(function () { return $parent.foo() + this.bar() },this);
      • 你有一个变量声明和一个 mycollection 的函数声明,因此,没有什么是真正正确连接的。您可以通过正确的范围来访问父数据,例如使用 self 对象
      猜你喜欢
      • 1970-01-01
      • 2013-05-30
      • 2014-08-08
      • 2016-01-21
      • 2013-08-26
      • 2023-03-11
      • 2023-04-06
      • 2012-09-08
      相关资源
      最近更新 更多