创建主干插件
Creating a backbone plugin
试图创建一个从Backbone.Model
"继承"但覆盖sync
方法的主干"插件"。
这是我到目前为止所拥有的:
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 行,在函数inherits()
内:
未捕获的类型错误:Function.prototype.toString 不是通用的。
我正在尝试以主干库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
填充被认为是过时的,因为(我相信)Object.create
最近的实现需要不止一个参数。此外,您正在使用的特定函数不会遵从本机Object.create
函数(如果存在),尽管您可能刚刚省略了应包装该函数的 if (typeof Object.create !== 'function')
语句。
相关文章:
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 如何对映射插件创建的敲除对象进行深度复制
- 如何在没有插件和Wordpress的情况下创建共享社交媒体
- 插件SDK中的动态或计算对象创建
- 是否可以在尚未附加到DOM的元素中创建一个sparkline(使用jquery.sparkline插件)
- 正在寻找一个插件来创建平面图
- Firefox插件:保存到文本文件的HTTP日志,其中包含时间、用户名、计算机名;t创建文本文件
- 当我动态创建元素时,选择的插件不起作用
- 我该如何访问由gullow灰质插件创建的数据对象(当使用nunjucks编译html文件时)
- 如何为我使用映射插件创建的挖空可观察量设置验证
- Phonegap/Cordova 2.9自定义插件创建.任何工作示例
- 如何获取由Bootstrap File Input插件创建的图像数据
- 免费的SVG转换插件-创建占位符元素
- 挖空映射插件[创建,更新]:对象已创建,无法更新
- RateIt jquery插件创建一个冲突的jquery文件,我在我的项目
- Bootstrap插件创建选项按钮与任意js
- 使用jquery插件创建自定义工具提示
- 是否可以在工具栏中为firebreath插件创建一个图标
- 简单的JQuery插件创建
- 正在为jquery插件创建命名空间