如何从父视图模型访问孙子视图模型?

时间:2014-09-04 09:31:09

标签: javascript knockout.js knockout-3.0

在我的webapp中,我创建了三个嵌套模型,它们的嵌套方式类似于第一个viewmodel是第二个的父级,第二个是第三个的父级。现在,如果我想显示第三个视图模型的值,它给我的错误是它没有定义。在我的代码LoanRateViewModel中,父级的子级为TermTierTerm的子级。

function Tier(data){
    var self = this;
    self.tierValue = ko.observable(data.tierValue || "");
    self.rate = ko.observable(data.rate || "121212");
    self.simplerate = ko.observable(data.simplerate || "121212");
    self.compoundrate = ko.observable(data.compoundrate || "12212");
    } 

function Term(data) {
    var self = this;
    self.Tiers = ko.observableArray([]);
    self.loanterm = ko.observable(data.loanterm || "12");
    self.termIdentifier = ko.observable(data.termIdentifier || "12");
};

这里是jsfiddle链接DEMO

我怎样才能通过淘汰赛来召唤大孩子?

1 个答案:

答案 0 :(得分:0)

遗憾的是,问题不在你发布的代码中*,而是在小提琴中。

你想要的肯定是可能的,尽管正如评论中所提到的,你需要适当的嵌套来接触祖母,因为它们总是在某个父母的背景下(Term)。 I've (mostly) fixed your jsfiddle,解决问题,直到没有错误为止。一些可以回答你的“问题”的事情是:

  • 确保正确关闭DOM元素(例如tabletbody);
  • 请务必参考$root了解根目录中的方法(例如addTier);
  • 在表格中,确保每一行都有相同数量的单元格(或使用colspan),否则您的结果会显得很奇怪。

*如果你编辑你的问题并且包含相关的(最好是格式良好的)代码,那就太好了,所以这个问题对于有类似问题的其他人来说仍然有用。