在NodeJS中,我有一个api,它为我提供了todo的数据:
app.get('/api/todo/:_id' function (req, res, next) {
Todo.findOne({ _id: req.params._id}, '', function (err, todo) {
res.send(todo);
});
});
现在在Backbone Marionette,我有loading_view然后我使用Manager.request(“todo:entity”,_id)从Backbone Model获取Todo。一旦todo被提取,我用新的todo_view
覆盖这个视图Manager.todoPanel.show(loading_view);
var fetching_todo = Manager.request("todo:entity", _id);
$.when(fetching_todo).done(function (todo) {
var todo_view = new Manager.TodoView({
model: todo
});
Manager.todoPanel.show(todo_view);
现在的问题是:
我想在没有返回todo时呈现视图。我的意思是空木偶ItemView。或者在BackboneJS的情况下,我应该从服务器返回什么以便Backbone了解必须返回空视图?
在这种情况下,只显示加载视图,因为如果我们找不到带有_id的Todo res.send不发送任何内容。
答案 0 :(得分:1)
尝试这样的事情:
app.get('/api/todo/:_id' function (req, res, next) {
Todo.findOne({ _id: req.params._id}, '', function (err, todo) {
if (err) return next(err);
if (todo)
res.send(todo);
else
res.send(404); //not found
});
});
在客户端使用.fail:
Manager.todoPanel.show(loading_view);
var fetching_todo = Manager.request("todo:entity", _id);
$.when(fetching_todo).done(function (todo) {
var todo_view = new Manager.TodoView({
model: todo
});
Manager.todoPanel.show(todo_view);
}).fail(function (err) {
//show a not found message.
});
答案 1 :(得分:0)
它没有延期工作,因为拒绝的承诺没有得到处理。在todo.fetch()中插入错误回调为
error: function () {defer.reject ('error message')}
然后在
中处理错误回调 $.when (fetching_todo).done (function (){}).fail (function (){});