【发布时间】:2014-09-04 09:31:09
【问题描述】:
在我的 web 应用程序中,我正在创建三个嵌套的视图模型,例如第一个视图模型是第二个的父级,第二个是第三个的父级。现在如果我想显示第三个视图模型的值,它会给我错误,它没有定义。在我的代码中,LoanRateViewModel 是父母,其孩子是 Term,Tier 是 Term 的孩子。
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
通过knockout js可以叫孙子吗?
【问题讨论】:
-
你不能这样跳过关卡——你怎么知道要显示哪个孙子?你必须知道它的父母。所以尝试使用类似:
LoanRateViewModel.Terms()[i].Tiers()其中i是Tier's父级的索引。 -
您可以使用计算来通过枚举所有术语来构建所有层的数组。即使你这样做了,
<a data-bind="click: addTier">Add Fields</a>也有问题。您的级别是哪个学期? -
如果通过 ui 调用访问它,您可以传入事件并使用 ko.contextFor(element) 并且在该模型中您可以访问其父级等等。
标签: javascript knockout.js knockout-3.0