Skip to main content

Using bootstrap-modal as Backbone.js view



I am attempting to create a Backbone.js view based on a Twitter bootstrap-modal, which makes use of Backbone's automatic event delegation via the events attribute of the view.





Unfortunately, bootstrap-modal seems to break Backbone's event delegation as it clones the view HTML before displaying the modal:







that.$element

.appendTo(document.body)

.show()







My view:







App.Views.ProjectsNav ||= {}



class App.Views.ProjectsNav.NewProjectView extends Backbone.View

events: {

'click .save': 'save',

'shown': 'shown'

}



save: (e) ->

...

false



shown: () ->

App.Helpers.Forms.setFocus($(@el), true)

false



render: () ->

$(@el).html(ich.nav_edit_project_template(@model.toJSON()))

@$('.modal').modal({'show': true, 'keyboard': true, 'backdrop': true})

@







The corresponding (Mustache) HTML template:







<div class="modal hide" style="display: none; ">

<div class="modal-header">

<a href="#" class="close">×</a>

<h3>New Project</h3>

</div>

<div class="modal-body form-stacked">

<label for="name">Name</label> <input type="text" name="name" value="{{name}}"/><input type="hidden" name="lock_version" value="{{lock_version}}"/>

</div>

<div class="modal-footer">

<a href="javascript:void(0)" class="save btn primary">Create</a>

<a href="javascript:void(0)" class="cancel btn secondary">Cancel</a>

</div>

</div>







Neither save nor shown are called when the respective events are triggered.





Any ideas?


Comments

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...

Is it possible to have IF statement in an Echo statement in PHP

Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for. I'm trying to do this, am I on the right path? echo " <div id='tabs-".$match."'> <textarea id='".$match."' name='".$match."'>". if ($COLUMN_NAME === $match) { echo $FIELD_WITH_COLUMN_NAME; } else { } ."</textarea> <script type='text/javascript'> CKEDITOR.replace( '".$match."' ); </script> </div>"; I am getting the following error message in the browser: Parse error: syntax error, unexpected T_IF Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.