我有一个半全面的KO设置。但到目前为止,我只使用KO来呈现数据。Knockout JS:增加属性值
现在我需要增加/减少模型上的值。
这里是我的模型:
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;
}
而我的观点是应用就像任何标准的淘汰赛结合(反应是我的Ajax响应,我传递给视图模型):
var viewModel = ItemsViewModel(response);
ko.applyBindings(viewModel, $('#ItemListWrapper')[0]);
但我似乎无法FIGUR e出如何使我的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);
谢谢你,这个伎俩。并且围绕字符串值包装'parseInt(),使它工作。我觉得很奇怪,文档没有涵盖很多语法......否则我是盲目的。 – KristianB 2012-03-21 18:54:25
不客气。文件提到可观察量是作为功能实现的。 http://knockoutjs.com/documentation/observables.html – Tuan 2012-03-21 18:57:01
嗯,我是盲人;) – KristianB 2012-03-21 18:59:06