I am very new to backbone and I am trying to get my head around it, but can not figure out what I am doing wrong. I am not using backbones router, I do not need to, I am using PHP Slim to handle all the routes, I am not sure if that is right or not?
But what I have tried to do sort of works and sort of does not. This works fine without any errors:
var TestForm= Backbone.View.extend({
render: function() {
var MarkupBit1 = '<form class="testClass">';
var MarkupBit2 = '<input value="5" name="ID">';
var MarkupBit3 = '<input value="6" name="Level">';
var MarkupBit4 = '<input value="titletest" name="MenuTitle">';
var MarkupBit5 = '<input value="pathtest" name="MenuPath">';
var MarkupBit6 = '<input type="submit" value="Save">';
var MarkupBit7 = '</form>';
var TotalMarkup = MarkupBit1+MarkupBit2+MarkupBit3+MarkupBit4+MarkupBit5+MarkupBit6+MarkupBit7;
this.$el.html(TotalMarkup);
return this;
}
});
//Make new view
var viewtest = new AdminEditMenu();
$(document).ready(function(){
$('#testdump').html(viewtest.render().el);
});
This builds my form and displays this out without any problems at all. But when I try this, it does not work,
var AdminEditMenu = Backbone.View.extend({
render: function() {
var MarkupBit1 = '<form class="AdminMenuEdits">';
var MarkupBit2 = '<input value="'+ this.options.myformid +'" name="MenuID">';
var MarkupBit3 = '<input value="'+ this.options.myformlevel +'" name="MenuLevel">';
var MarkupBit4 = '<input value="'+ this.options.myformtitle +'" name="MenuTitle">';
var MarkupBit5 = '<input value="'+ this.options.myformpath+'" name="MenuPath">';
var MarkupBit6 = '<input type="submit" value="Save">';
var MarkupBit7 = '</form>';
var TotalMarkup = MarkupBit1+MarkupBit2+MarkupBit3+MarkupBit4+MarkupBit5+MarkupBit6+MarkupBit7;
this.$el.html(TotalMarkup);
return this;
}
});
var viewtest = new AdminEditMenu({
myformid : 33,
myformlevel: 5,
myformtitle: 'TitleTest',
myformpath: '/testing'
});
$(document).ready(function(){
$('#testdump').html(viewtest.render().el);
});
With this I get myformid not undefined within the console.
I have tried adding something like var myformid = null
before the backbone view?
I love the idea of backbone, I will just say that their website could do with some more examples, which would make learning it easier.
So What am I doing wrong?
My end goal would be to build a new view object with data held within my database, output this data to a form pre-populated with my database data. Then use .save
form backbone to get PHP Slim to to update the data within the db.
var AdminEditMenu = Backbone.View.extend({
initialize: function(options) {
this.options = options;
},
render: function() {
var MarkupBit1 = '<form class="AdminMenuEdits">';
var MarkupBit2 = '<input value="'+ this.options.myformid +'" name="MenuID">';
var MarkupBit3 = '<input value="'+ this.options.myformlevel +'" name="MenuLevel">';
var MarkupBit4 = '<input value="'+ this.options.myformtitle +'" name="MenuTitle">';
var MarkupBit5 = '<input value="'+ this.options.myformpath+'" name="MenuPath">';
var MarkupBit6 = '<input type="submit" value="Save">';
var MarkupBit7 = '</form>';
var TotalMarkup = MarkupBit1+MarkupBit2+MarkupBit3+MarkupBit4+MarkupBit5+MarkupBit6+MarkupBit7;
this.$el.html(TotalMarkup);
return this;
}
});
Adding initialize method and assigning options to this.options should do the job.
Added fiddle. Check it. I removed the other snippet as it doesn't work.