Опитвам се да създам просто приложение, използвайки шаблони за подчертаване и опорна точка (както е описано в тази статия). Сигурен съм, че файлът с шаблона се зарежда правилно, но не съм сигурен дали прилагам модела правилно.
Аз също провери продукцията на 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>
<% }); %>