访问ViewModel函数
Accessing ViewModel function
我正在使用knockout来创建一个注释字段,我已经从使用多个视图模型改为使用一个父视图模型,因为我在使用foreach时遇到了一些冲突。我的新问题是从我的父ViewModel运行一个函数。我的Comment()函数可以工作,但在javascript中调用commentSection()时遇到问题。
我想从函数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();
});
如果我的问题不清楚,请告诉我。提前感谢!
cSection
是可观察的,您必须打开它才能获得commentSection
实例:
vm.cSection().getNewEntries();
deleteComment
功能相同:
self.deleteComment = function() {
vm.cSection().comments.remove(self);
};
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- KnockoutJS - ViewModel (祖父 - 父 - 子)访问子元素中的父函数
- viewModel 使用挖空.js在原型上计算函数
- 将强类型的 ViewModel 值传递给 Javascript 函数
- Knockout:在绑定到ViewModel函数的渲染内容中创建链接的最佳方法
- 如何在bindingHandler内从ViewModel调用函数
- 访问ViewModel函数
- Knockout VIewModel触发foreach内部的函数
- 从另一个函数内部调用ViewModel函数
- 改变viewmodel函数的observablearray值
- 使用ViewModel构造函数击倒虚拟组合
- 从js函数在razor视图上填充viewmodel属性
- 从ViewModel外部调用Knockout函数