【发布时间】:2012-03-21 18:34:52
【问题描述】:
我有一个半全面的 KO 设置。但是目前我只用KO来呈现数据。
现在我需要增加/减少模型的值。
这是我的模型:
SharedItem: function (data) {
var self = {};
...
self.rating = ko.observable(data.Rating);
...
return self;
}
这是我的观点
ItemsViewModel: function (json) {
var model = {};
model.shareditems = ko.observableArray();
var mappedSharedItems = [];
var parsedData = $.parseJSON(json);
$.each(parsedData, function (key, val) {
var newSharedItems = new SharedItem(val);
mappedSharedItems.push(newSharedItems);
});
//My function to vote
model.voteUp = function(item) {
item.rating += 1;
}
model.shareditems(mappedSharedItems);
return model;
}
我的视图像任何标准的 Knockout 绑定一样被应用(响应是我传递给视图模型的 ajax 响应):
var viewModel = ItemsViewModel(response);
ko.applyBindings(viewModel, $('#ItemListWrapper')[0]);
但是我似乎不知道如何让我的voteUp 函数增加评分。
重要提示:rating 值是来自服务器的字符串。但我想我可以在上面使用parseInt。
谁能指出我如何使这个函数增加模型属性的值?
提前致谢
编辑:如果你想查看我称之为voteUp的HTML,这里是:
<div class="Vote">
<a href="#" data-bind="click: $parent.voteUp">+1</a>
</div>
编辑 2: 我的解决方案:
item.rating(parseInt(item.rating()) + 1);
【问题讨论】:
标签: javascript jquery data-binding knockout.js