创建需要JS模块,Backbone

时间:2013-12-09 21:20:57

标签: javascript backbone.js requirejs

我在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) {

最简单的方法是什么?

1 个答案:

答案 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;
});