Laravel和骨干网应用程序 - var app undefined?

时间:2014-07-17 10:32:58

标签: javascript backbone.js laravel

我正在开发一个与RESTful api交互的Web应用程序。客户端是在laravel和backbone中构建的,我正在努力做的是提出一种基于当前URL加载正确,模型,集合和视图的智能方法。

我有一个刀片模板,它为我提供了通用品牌,然后是网站每个部分的模板,加载到适当的下划线模板,脚本,数据等。

例如,在http://domain.local/users访问用户页面,并在以下脚本中加载

User.Collection.js

(function( Users, app_arg ){

    'use strict';

    Users.Collection = app.UserCollection

}(POPS.module('users'), POPS ));

User.Model.js

    (function( Users, app ) {

    'use strict';

        Users.Model = Backbone.Model.extend({

        });

    })(POPS.module('users', POPS));

User.Views.Master.js

    (function( Users, app_arg ) {

    'use strict';

    Users.Views.Master = Backbone.View.extend({

        el: '#app',

        template: _.template( $('#tpl-user').html() ),

        events: {
            "click .js-add-new-user" : "launchModal",

        },

        initialize: function() {
            this.listenTo( this.collection, 'reset', this.render );
            this.listenTo( this.collection, 'add', this.render );

            // app.dashProjectCollection = this.collection;
        },

        render: function() {

            this.$el.html( this.template() );

            new app.UsersView({ collection: this.collection });
            new app.userModal({ model: app.User, collection: this.collection });
            //this.filterView = new Dashboard.Views.Filter();
            //this.projectView = new Dashboard.Views.Projects({ collection: this.collection });
            //this.CollaboratorView = new Dashboard.Views.Collaborators();


            return this;
        },

        launchModal: function(e) {
            e.preventDefault();
            $("#newUser").modal();
        }

    });

}( POPS.module('users'), POPS ));

所有东西都从app.js中被解雇

// Main object for the entire app
window.POPS = {

    config: {
        api: {
            base:'http://pops.local/api/v1/',
        }
    },

    // Create this closure to contain the cached modules
    module: function() {
        // Internal module cache.
        var modules = {};
        // Create a new module reference scaffold or load an
        // existing module.
        return function(name) {
            // If this module has already been created, return it.
            if(modules[name]) {
                return modules[name];
            }
            // Create a module and save it under this name
            modules[name] = { Views: {} };
            return modules[name];
        };
    }(),

    init: function() {

        // :: app start :: //
        var app = POPS;
        var Module = app.module( $( '#popsapp' ).data('route') );

        // Creates a Master object in the global namespace so data can be passed in from the DOM.
        // This would be replaced with a master Router if we weren't using actual pages
        app.Initialiser = function( initialCollection ) {
            this.start = function() {

                //don't cache ajax calls
                $.ajaxSetup({ cache: false });


                if(Module.Collection !== undefined) {
                    this.collection = new Module.Collection();
                    this.view = new Module.Views.Master({ collection: this.collection });
                } else {
                    this.view = new Module.Views.Master();  
                }

                if(this.collection !== undefined) {
                    this.collection.reset( initialCollection );
                }

                //moved this here so script runs after the DOM has loaded.
                //but script.js still needs completely removing.
            };
        }; 
    }
};

// Entry point into the application
POPS.init();

我无法理解为什么app未定义!

1 个答案:

答案 0 :(得分:0)

你的第一个街区

(function( Users, app_arg ){

    'use strict';

    Users.Collection = app.UserCollection

}(POPS.module('users'), POPS ));

在函数参数中定义app_arg但在函数中使用app.UserCollection。这里的应用程序将是未定义的。

对于User.Views.Master.js

,这也是相同的