backbone.js – 创建骨干插件
作者:互联网
尝试创建一个从Backbone.Model“继承”的主干“插件”,但会覆盖同步方法.
这是我到目前为止:
Backbone.New_Plugin = {};
Backbone.New_Plugin.Model = Object.create(Backbone.Model);
Backbone.New_Plugin.Model.sync = function(method, model, options){
alert('Body of sync method');
}
方法:Object.create()直接取自Javascript:The Good Parts:
Object.create = function(o){
var F = function(){};
F.prototype = o;
return new F();
};
我在尝试使用新模型时遇到错误:
var NewModel = Backbone.New_Plugin.Model.extend({});
// Error occurs inside backbone when this line is executed attempting to create a
// 'Model' instance using the new plugin:
var newModelInstance = new NewModel({_pk: 'primary_key'});
该错误发生在Backbone 0.9.2的开发版本的第1392行.在函数内部继承():
Uncaught TypeError: Function.prototype.toString is not generic .
我试图以骨干库Marionette创建新版本的视图的方式创建一个新的插件.看起来我似乎误解了应该这样做的方式.
为骨干创建新插件的好方法是什么?
解决方法:
你扩展Backbone.Model的方式并不是你想要的方式.如果要创建新类型的模型,只需使用extend:
Backbone.New_Plugin.Model = Backbone.Model.extend({
sync: function(method, model, options){
alert('Body of sync method');
}
});
var newModel = Backbone.New_Plugin.Model.extend({
// custom properties here
});
var newModelInstance = new newModel({_pk: 'primary_key'});
另一方面,Crockford的Object.create polyfill被认为是过时的,因为(我相信)最近的Object.create实现需要多个参数.此外,您正在使用的特定函数不会遵循本机Object.create函数,如果它存在,但是,您可能刚刚省略了if(typeof Object.create!==’function’)语句,它应该包含该函数功能.
标签:javascript,javascript-framework,backbone-js,marionette 来源: https://codeday.me/bug/20190530/1181996.html