samedi 3 janvier 2015

Backbone.view options error

i've got text toolbar: http://take.ms/V4b1g


This is "backbone.view" function:



define([
'View/Popup',
'text!Templates/Toolbar/Edit.tpl'
], function(Popup, _edit){

var Edit = Backbone.View.extend({
className: 'svs-cke',
events:{
'mousedown': 'mousedown',
'click .bold': 'toggleBold',
'click .italic': 'toggleItalic',
'click .underline': 'toggleUnderline',
'click .link': 'toggleLink',

'click .size': 'toggleSize',

'keypress [name="size"]': 'setSize',

'keypress [name="link"]': 'setUrl'
},

initialize: function(){

},

render: function(){
this.$el.append(_.template(_edit).apply(this.options));
return this.$el;
},

mousedown: function(e){
if(e.target !== this.$el.find('[name="link"]').get(0)){
//e.preventDefault();
}
},

toggleSize: function(e){
this.$el.find('[name="size"]').val(this.options.size.attr('class'));
this.$el.find('[name="size"]').show();
this.$el.find('[name="size"]').focus();
},

setSize: function(e){
if(e.which == 13){
e.preventDefault();
var url = $(e.currentTarget).val();
if(url.length > 0){
this.options.size.attr('class', url);
this.options.size.trigger('sizeChange');
}else{
this.options.size.attr('class', '#');
this.options.size.trigger('sizeChange');
}

$(e.currentTarget).hide();
}
},

toggleBold: function(e){
document.execCommand('bold', false, null);
$(e.currentTarget).toggleClass('t-active');
},

toggleItalic: function(e){
document.execCommand('italic', false, null);
$(e.currentTarget).toggleClass('t-active');
},

toggleUnderline: function(e){
document.execCommand('underline', false, null);
$(e.currentTarget).toggleClass('t-active');
},

toggleLink: function(e){
if(this.options.nodes.url){
this.$el.find('[name="link"]').val(this.options.nodes.url);
}

this.lastRange = window.getSelection().getRangeAt(0);
this.$el.find('[name="link"]').show();
this.$el.find('[name="link"]').focus();
},

setUrl: function(e){
if(e.which == 13){
e.preventDefault();
this.$el.find('[name="link"]').blur();
window.getSelection().addRange(this.lastRange);
var url = $(e.currentTarget).val();
if(url.length > 0){
document.execCommand('createLink', false, url);
}else{
document.execCommand('unlink', false, null);
}

$(e.currentTarget).hide();
this.$el.find('.link').toggleClass('t-active');
}
}
});

return Edit;
});


when i'm trying to click on this: http://take.ms/X7dpz i've got this error:



Uncaught TypeError: Cannot read property 'attr' of undefined


in this line:



this.$el.find('[name="size"]').val(this.options.size.attr('class'));


what i'm doing wrong in this line? thx!


Aucun commentaire:

Enregistrer un commentaire