/ / използване на шаблони за подчертаване с Backbone и Require.js - backbone.js, requirejs, underscore.js

използвайки шаблони за долни черти с Backbone и Require.js - backbone.js, requirejs, underscore.js

Опитвам се да създам просто приложение, използвайки шаблони за подчертаване и опорна точка (както е описано в тази статия). Сигурен съм, че файлът с шаблона се зарежда правилно, но не съм сигурен дали прилагам модела правилно.

Аз също провери продукцията на compiledTemplate променлива, но съдържа само <h1> </h1> , така че изглежда, че може да има нещопогрешно във формата на моя модел. Но аз не съм бил в състояние да излезе witjh всяко решение досега по този начин аз съм публикуване тук, надявайки се, че някой може да ми помогне с това ..

index.html

<head>
<script src="./dev_env/app/libs/vendor/require.min.js" data-main="dev_env/app/main"></script>
<script>
require(["app_init"]);
</script>
</head>
<body >

<div id="test">
</div>

</body>
</html>

./templates/template.html

<h1> <%= obj.title  %> </h1>

./app_init.js

require([ "../app" ], function(App){
App.initialize();
});

./app.js

define([ "backbone", "./router", "underscore","jquery"], function (Backbone, Router, _,  $) {
var initialize = function(){
Router.initialize();
}

return {
initialize: initialize
};
});

./models/model_menu.js

define([ "underscore",  "backbone" ], function(_, Backbone){
var MenuModel = Backbone.Model.extend({
defaults: {
title: "Test1"
}
});

return MenuModel;
});

./collections/collection_menu.js

define([ "underscore",  "backbone",  "models/model_menu"
], function(_, Backbone, MenuModel){
var MenuCollection = Backbone.Collection.extend({
model: MenuModel
});

return MenuCollection;
});

./router.js

define(["jquery","underscore", "backbone", "views/menu/view_menu"],  function ($, _, Backbone, vMenu) {
var AppRouter = Backbone.Router.extend({
routes : {
"menu" : "showMenu",

}
});

var initialize = function () {
var app_router = new AppRouter;
app_router.on("route:showMenu", function () {
var MyMenu = new vMenu();
MyMenu.render();
});

Backbone.history.start();
};
return {
initialize : initialize
};
});

./views/menu_view/view_menu.js

define([ "jquery","underscore", "backbone", "collections/collection_menu", "text!templates/template.html" ], function ($, _, Backbone, MenuCollection,  myTempl) {
var MenuViiew = Backbone.View.extend({
el : $("#test"),
initialize : function () {
this.collection = new MenuCollection();
this.collection.add( {title: "Title2"});

var compiledTemplate = _.template( myTempl, { obj : this.collection.models} );
this.$el.html(compiledTemplate);
}
});

return MenuViiew;
});

Отговори:

0 за отговор № 1

Сега разбирам къде греша, неправилно разбирам какво е колекция, затова не мога да го накарам да работи. Извинявам се за това, но все още изучавам тези неща.

Ето решението:

между другото. Промених collection_menu да се menu_collections така че е ясно, че файлът съдържа колекция от модели на менюта.

възгледи / view_model.js

define([ "jquery","underscore", "backbone", "collections/menu_collections", "text!templates/template.html" ], function ($, _, Backbone, MenuCollections, myTempl) {
var MenuViiew = Backbone.View.extend({
el : $("#alex"),

initialize : function () {
this.collection = new MenusCollection()
this.collection.add({ title: "Test1" });
this.collection.add({ title: "Test2" });
},
render: function(){
var compiledTemplate = _.template(myTempl, { menus : this.collection.models});
this.$el.html(compiledTemplate);
}
});

return MenuViiew;
});

./templates/template.html

<% _.each(menus, function(menu) { %>
<h1> <%= menu.get("title")  %> </h1>
<% }); %>