0
我正在使用knockout来创建一个commentfield,我已经从使用几个viewmodels改变为一个父viewmodel,因为我在使用foreach时遇到了一些冲突。我的新问题是从我的父ViewModel运行一个函数。我的评论()函数的工作原理,但我有问题调用javascript内的commentSection()。访问ViewModel函数
我想从函数commentSection调用getNewEntries。我认为这样做的方式是用vm.cSection.getNewEntries调用我的Viewmodel(vm),但控制台说它不是一个函数。所以我的问题是,我怎么能通过vm调用这个函数getNewEntries?
下面是它的外观:
function Comment() {
var self = this;
self.nickname = ko.observable();
self.newMsg = ko.observable("");
self.sendEntry = function() {
if (self.newMsg() !== "" && self.nickname() !== "") {
$.post(writeUrl, "entry=" + ko.toJSON(self));
self.newMsg("");
}
};
}
function commentSection() {
var self = this;
self.timestamp = 0;
self.comments = ko.observableArray();
self.editable = ko.observable(false);
self.deleteComment = function() {
vm.cSection.comments.remove(self);
};
self.editComment = function() {
self.editable(!self.editable());
};
self.getNewEntries = function() {
$.getJSON(readUrl, "timestamp=" + self.timestamp, function(comments) {
for (var i = 0; i < comments.length; i++) {
var entry = comments[i];
if (entry.timestamp > self.timestamp) {
self.timestamp = entry.timestamp;
}
self.comments.unshift(entry);
}
self.getNewEntries();
});
};
}
function ViewModel() {
var self = this;
self.cSection = ko.observable(new commentSection());
self.comments = ko.observableArray();
self.selectedComment = ko.observable(new Comment());
//self.cSection.getNewEntries();
}
var vm = new ViewModel();
ko.applyBindings(vm);
vm.cSection.getNewEntries();
});
如果我的问题不清楚,告诉我。提前致谢!
啊所以它是那么简单。菜鸟错误!非常感谢。 :) – 2014-10-04 11:04:17