Knockout视图模型返回函数(如何?)
Knockout viewmodel returning function (how to?)
我有一个显示数据库消息的应用程序。将Breeze.js用于服务器端API控制器,将Knockout.js用于数据绑定。
最初我们得到30条消息,然后每30秒我们得到插入数据库的最新消息。
function messageViewModel() {
var self = this;
var refreshRate = 5000;
var lastMessageID = null;
self.allMessages = ko.observableArray();
var query = breeze.EntityQuery.from('Messages').orderByDesc('Id').expand('Poster').take(20);
manager.executeQuery(query)
.then(function(messages) {
self.allMessages(messages.results);
lastMessageID = messages.results[0].Id();
window.setInterval(refresh, refreshRate);
}).fail(function(error) {
alert(error.message);
});
function refresh() {
query = breeze.EntityQuery.from('Messages').orderByDesc('Id').where('Id', '>', lastMessageID).expand('Poster');
manager.executeQuery(query)
.then(function (newMessages) {
if (newMessages.results.length != 0) {
for (var count = 0; count < newMessages.results.length; count++) {
self.allMessages.unshift(newMessages.results[count]);
lastMessageID = newMessages.results[0].Id();
}
}
}).fail(function (error) {
alert(error.name+" "+error.message);
});
}
}
return {
getPosterByCallsign: getPosterByCallsign,
MessageViewModel: messageViewModel,
postMessage: postMessage,
}
我现在希望能够从另一个js模块调用刷新方法。我怎样才能做到这一点?视图模型是从如下模块调用的:
define(["common/dataService"], function(n0uk) {
$(document).ready(function() {
ko.applyBindings(new n0uk.MessageViewModel());
$('#postButton').click(function() {
n0uk.postMessage(window.message);
});
$('#message').keypress(function(e) {
if (e.which == 13) {
n0uk.postMessage(window.message);
e.preventDefault();
}
});
});
});
refresk应该在n0uk.postMessage()调用之后调用。。。。
您可以使用PubSub
订阅您的第一个模块:
PubSub.subscribe('refreshMessages', refresh);
并在需要时在您的第二个模块中发布:
PubSub.publish('refreshMessages');
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 如何将函数包装在函数中以避免代码重复
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- Javascript:如何获取函数.apply()的键
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何从jquery函数返回变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何将firebase数据传递到函数中
- 如何将具有文本类型值的var放入jQuery函数中
- 如何将一个JavaScript函数回调为多个函数
- 如何迭代Array.prototype函数
- 如何重写下面的函数,使其不会't用于循环
- 如何控制组件'的createContent函数被激发
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 你能解释一下这个阶乘函数是如何工作的吗?
- 如何计算每个元素's的高度,并将这些值用作函数中的变量
- 如何在视图模型contet更新更新上调用Jquery函数