【发布时间】:2014-02-20 08:04:43
【问题描述】:
我有一个淘汰脚本,它通过 ajax 从服务器加载数据并将此信息输出到模型中。如果为了简化一切,我的模型如下所示:
function ArticleViewModel() {
var self = this;
this.articleInfo = ko.observable();
this.getArticle = function(id) {
$.get("/router.php", { articleId: id }, self.articleInfo, 'json');
};
};
一切都很好(我的视图填充了来自服务器的信息)。但我需要修改这些信息(例如将数据从时间戳更改为人类可读格式)。
据我了解,实现它的一种方法是通过knockout computed observables,但我没有看到这样做的原因,因为我在这里永远不需要时间戳,我可以在更新后更改一次数据并使用它(如果我错了,我很乐意听到为什么以及如何使用计算出的 observables 来实现我想要的)。
所以我尝试通过以下方式更改我的 ajax 请求数据(一切都一样,但 ajax 调用有回调):
$.get("/router.php", { type : 'mail' }, function(i){
var d = new Date(i.date);
self.articleInfo = {
date: d.toString(),
title: i.title
};
}, 'json');
我在页面上没有错误,但没有显示任何信息。当我转到其他页面时,我看到一条警告:TypeError {stack: (...), message: "500 Error get /#Home Property 'articleInfo' of object #<ArticleViewModel> is not a function"}
我做错了什么?
【问题讨论】:
标签: knockout.js computed-observable