knockout.js - Knockoutjs 获取父对象

标签 knockout.js

我在使用knockout.js 从子对象获取父对象的特定字段时遇到困难。

function Child(info){
    var self = this;
    self.x = info.x;
    self.y = info.y;
    self.parentThing = parent.fieldToGet();  // This is when I had problem
}

function Main() {
    var self = this;
    self.fieldToGet = ko.observable();
            self.things = ko.observableArray();
    self.postFunction = function(){
        $.post('XXX.php', $("form#filterForm").serialize(), function(data){
                var mappedThing = $.map(data.data, function(info){return new Child(info); });
                self.things(mappedThing);
            }
        }, 'json');
    };
}
var main = new Main();
ko.applyBindings(main, $("div#main")[0]);

层次结构是 Main 有几个 Child。在子对象中,我想获取其父对象的“属性”:fieldToGet。

最佳答案

我认为一个好的解决方案是 将父类作为参数传递给子类 .

function Child(info, parent){
    var self = this;
    self.parent = parent;
    self.x = info.x;
    self.y = info.y;
    self.parentThing = parent.fieldToGet();  // This is when I had problem
}


function Main() {
    var self = this;
    self.fieldToGet = ko.observable();
    self.things = ko.observableArray();
    self.postFunction = function()
    {
        $.post('XXX.php', $("form#filterForm").serialize(), function(data) {
              var mappedThing = $.map(data.data, function(info) { 
                 return new Child(info, self);        
              });
              self.things(mappedThing);
        }, 'json');
    };
}
  var main = new Main();
  ko.applyBindings(main, $("div#main")[0]);

正如您在我的示例中所看到的,父实例( self )将作为参数传递给构造函数中的子类( function Child(info, parent) )

关于knockout.js - Knockoutjs 获取父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18198364/

相关文章:

javascript - Jquery 清除文本框不起作用?

javascript - 模板内部选项绑定(bind)的奇怪行为

javascript - 应用来自外部文件的绑定(bind)

javascript - 使用 Knockout + Typeahead 自定义绑定(bind)更新文本框中的值

javascript - Bootstrap 选择的 knockout 自定义绑定(bind)不更新 View 模型 "selectedCategories/selectedCategory"

javascript - 如何使用ko.observableArray?

jQuery 和 knockout 一起表现不佳

javascript - 仅在 IE 中的 Iframe 中执行缓慢的 javascript

checkbox - knockout js : Bind checkbox enable when boolean is false

javascript - 用作ID的knockout.js变量