backbone.js - How to do multiple models in the same page using backbone and RequireJS -


i developing aplication single page. i'm using backbone.js , requirejs. problem on 1 page use 3 different models not interrelated. loads first.

page.html

<html><heade></heade><body> <div id="content">     <div id="results"></div>     <div id="collectortable">         <!-- container gets populated index -->     </div>     <div id="collectoredition">         <!-- container gets populated edition -->     </div>     <div style="margin-top: 10px">         <div id="terms" style="width: 50%; float: left; height: auto !important; min-height: 100px;">             <div id="termtable"><!-- term model index --></div>             <div id="termedition"><!-- term model edition --></div>         </div>         <div id="termscampaign" style="width: 50%; float: left; height: auto !important; min-height: 100px;">             <div id="termcampaigntable"><!-- termcampaign model edition --></div>             <div id="termcampaignedition"><!-- termcampaign model edition --></div>         </div>     </div> </div> <script data-main="js/maincollector" src="js/libs/require.js"></script> <script data-main="js/mainterm" src="js/libs/require.js"></script> <script data-main="js/maintermcampaign" src="js/libs/require.js"></script> </body> </html> 

maincollector.js

require.config({     baseurl: "js",     paths: {         html5shiv: "libs/html5shiv",         jquery: "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min",         jqueryui: "http://code.jquery.com/ui/1.10.3/jquery-ui",         tablesorter: "libs/jquery.tablesorter.min",         script: "script",         underscore: "libs/underscore.min",         backbone: "libs/backbone.min",         utils: "utils",         //files collector         collectormodel: "models/collectormodel",         collectorcollection: "collections/collectorcollection",         collectorrouter: "routers/collectorrouter",         // views         edit: "views/collector/collector_edit",         index: "views/collector/collector_index",         neww: "views/collector/collector_new",         row: "views/collector/collector_row",         show: "views/collector/collector_show",         //templates         'templates': 'templates'     },     shim: {         jqueryui: {             deps: ["jquery"]         },         tablesorter: {             deps: ["jquery"],             exports: "tablesorter"         },         script: {             deps: ["jquery", "jqueryui", "tablesorter"],             exports: "script"         },         underscore: {             exports: "_"         },         backbone: {             deps: ["underscore", "jquery"],             exports: "backbone"         }     }  });  require(["backbone", "underscore", "collectorcollection", "collectorrouter", "script"],     function (backbone, _, collectorcollection, collectorrouter) {         var collectors = new collectorcollection();         var router = new collectorrouter({collectors: collectors});         backbone.history.start();     }); 

mainterm.js

require.config({     baseurl: "js",     paths: {         html5shiv: "libs/html5shiv",         jquery: "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min",         jqueryui: "http://code.jquery.com/ui/1.10.3/jquery-ui",         tablesorter: "libs/jquery.tablesorter.min",         script: "script",         underscore: "libs/underscore.min",         backbone: "libs/backbone.min",         utils: "utils",         //files term         termmodel: "models/termmodel",         termcollection: "collections/termcollection",         termrouter: "routers/termrouter",         // views         ...         //templates         'templates': 'templates'     },     shim: {         ...     }  });  require(["backbone", "underscore", "termcollection", "termrouter", "script"],     function (backbone, _, termcollection, termrouter) {         var terms = new termcollection();         var router = new termrouter({terms: terms});         backbone.history.start();     }); 

maintermcampaign.js

require.config({     baseurl: "js",     paths: {         html5shiv:      "libs/html5shiv",         jquery:         "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min",         jqueryui:       "http://code.jquery.com/ui/1.10.3/jquery-ui",         tablesorter:    "libs/jquery.tablesorter.min",         script:     "script",         underscore: "libs/underscore.min",         backbone:   "libs/backbone.min",         utils:      "utils",         //files term campaign         termcampaignmodel:      "models/termcampaignmodel",         termcampaigncollection: "collections/termcampaigncollection",         termcampaignrouter:     "routers/termcampaignrouter",         // views         ...         //templates         'templates': 'templates'     },     shim: {         ...     }  });  require(["backbone", "underscore", "termcampaigncollection", "termcampaignrouter", "script"],     function (backbone, _, termcampaigncollection, termcampaignrouter) {         var termscampaign = new termcampaigncollection();         var router = new termcampaignrouter({termscampaign: termscampaign});         backbone.history.start();     }); 

you should have 1 main.js file in view,

<script data-main="js/maincollector" src="js/libs/require.js"></script> <script data-main="js/mainterm" src="js/libs/require.js"></script> <script data-main="js/maintermcampaign" src="js/libs/require.js"></script> 

is wrong, use:

<script data-main="js/main" src="js/libs/require.js"></script> 

, , put logic main.js file. wrote maincollector, mainterm.js , maintermcampaign.js similar. mean have 3 routers in app, seems bad thing, think 1 should enough. think should think again how structure code.

you put script tag body, unusual, read require.js docs , try use best practices.


Comments

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -