我在Backbone中有一个项目,我正在使用require js(我没有太多的经验,需要这是我的第一个项目,实际上)。
现在。在我的home.js视图中,我有很多这样的函数
iScroll: function () {
window.scrollers.myScroll = new iScroll(this.$('#products_container')[0], {
vScrollbar: true,
onScrollStart: function () {...........
swipeMobile: function () {
$("#mobile_view").swipe({
swipe: function (event, direction, distance, duration, fingerCount) {
if (direction == "left") {....
我想将所有这些函数放在一个单独的模块中,例如“plugins”,并在我需要时在home.js视图中调用我需要的函数。
我在我的家庭视图上加载我的模板
define([
'text!templates/about.html',
'text!templates/home.html',
'text!templates/product.html',
'text!templates/contact.html',
'collections/products'
],
function (aboutTemplate, homeTemplate, productTemplate, contactTemplate, Products) {
最简单的方法是什么?
答案 0 :(得分:2)
如果您的函数集合是Backbone Model,Collection或View的扩展,您可以执行以下操作:
define(['backbone'], function( Backbone ) {
return Backbone.View.extend({
customMethod: function() {
return this;
}
});
});
然后只需要文件的路径,就可以这样使用它:
require(['path/to/custom/view'], function( CustomView ) {
var customview = new CustomView();
customview.customMethod(); // returns the Backbone view
});
编辑:如果您有一些不是模型,集合或视图的代码,您可以改为执行此操作(假设这是一个没有依赖项的模块):
define(function() {
var MyCustomHelper = function() {
this.someattribute = true;
};
MyCustomHelper.prototype.customMethod = function() {
return this.someattribute;
};
return MyCustomHelper;
});