gpt4 book ai didi

javascript - 数据绑定(bind)不适用于 View 模型

转载 作者:行者123 更新时间:2023-11-28 09:05:10 25 4
gpt4 key购买 nike

这是一个简单的 View 模型

var Cake=function(id,name,price,image)
{
this.id=ko.observable(id);
this.name=ko.observable(name);
this.price=ko.observable(price);
this.image=ko.observable(image);
};
var oldCakes=ko.observableArray(
[
new Cake('HSJ525','Name of the Cake',54.30,'http://placehold.it/160x100'),
new Cake('HSJ526','Other Cake',64.30,'http://placehold.it/160x100'),
new Cake('HSJ527','Another roquefort',84.30,'http://placehold.it/160x100'),
new Cake('HSJ528','AndTheLast',44.30,'http://placehold.it/160x100'),
])

var viewModel=function()
{
var self=this;
self.cakeBox=oldCakes;

}
window.view_model = new viewModel();
ko.applyBindings(window.view_model);

这是 Html

div.span12(data-bind='foreach:cakeBox')
div.row-fluid
div.span4
span(data-bind='text:$data.cakeBox().name()')

这就是错误

Uncaught Error: Unable to parse bindings.
Message: TypeError: Object [object Object] has no method 'cakeBox';
Bindings value: text:$data.cakeBox().name()

为什么???

最佳答案

假设您的 HTML 看起来像这样:

<div data-bind="foreach:cakeBox">
<span data-bind="text:$data.cakeBox().name()"></span>
</div>

那么你的问题是第二个数据绑定(bind)。当您执行 foreach 绑定(bind)时,该 block 中的所有绑定(bind)都将获取 foreach 中当前元素的上下文。所以 $data 指的是数组中的一个成员。

它应该是这样的:

<span data-bind="text:name"></span>

因为name是当前绑定(bind)上下文的属性。

关于javascript - 数据绑定(bind)不适用于 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com