![](/img/trans.png)
[英]data-bind=“click” not working with nested knockout view model
[英]data-bind didnt work on view model
這是一個簡單的視圖模型
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>
然后,您的問題是第二個數據綁定。 當您執行foreach
綁定時,該塊內的所有綁定都將獲取foreach中當前元素的上下文。 因此$data
指向數組中的成員。
它應該是什么樣的:
<span data-bind="text:name"></span>
因為name
是當前綁定上下文的屬性。
更換:
data-bind='text:$data.cakeBox().name()
通過
data-bind='text:name'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.