我是Backbone.js的新手.对于试验/初始开发,我在标签的一个页面上有所有东西,但我开始将代码分离成一个单独的.js文件.在我这样做后,我收到来自路由器的错误.
未捕获的TypeError:对象[object Object]没有方法'apply'
这是我的路由器代码:
var AppRouter = new Backbone.Router.extend({
routes: {
":uuid": "details"
},
details: function (uuid) {
// load details
new DetailView({id: uuid, el: $('#detailView')});
}
});
var appRouter = new AppRouter;
Run Code Online (Sandbox Code Playgroud)
我在上面的文件标记中加载了模型/视图,但即使我注释掉文件的标记或清空文件,它仍然会显示错误.
抛出错误的行是 var appRouter = new AppRouter;
我是在做路由器代码的错误.
谢谢!!安德鲁
我正在尝试传递一个参数来在猫鼬模型上预先保存中间件,例如:
subject.save({ user: 'foo', correlationId: 'j3nd75hf...' }, function (err, subject, count) {
...
});
Run Code Online (Sandbox Code Playgroud)
它被传递给两个预保存中间件
第一的:
schema.pre('save', function (next) {
// do stuff to model
if (arguments.length > 1)
next.apply(this, Array.prototype.slice.call(arguments, 1));
else
next();
});
Run Code Online (Sandbox Code Playgroud)
然后:
schema.pre('save', function(next, metadata, callback) {
// ...
// create history doc with metadata
// ...
history.save(function(err, doc) {
if(err) throw err;
if (typeof metadata == 'object')
next(callback);
else
next();
});
});
Run Code Online (Sandbox Code Playgroud)
它不适用于保存从数据库中获取的现有模型,但它适用于新创建的模型。
如果我删除参数,它确实有效。
所以如果我打电话...
subject.save(function (err, subject, count) {
...
});
Run Code Online (Sandbox Code Playgroud)
...它确实有效。
看起来回调从未真正回调。所以也许它假设第一个参数是 save() …