2016-12-25 3 views
0

brauche Hilfe, kann nicht verstehen, wie jede Ansicht des Modells an jeden bereits vorhandenen DIV in DOM angehängt wird (have und div.container mit div.widget Array).Ansicht des Modells an existierende DIV im Backbone anhängen

// Model 
V.Models.Shortcode = Backbone.Model.extend({}); 

// Shortcodes Collection Init 
V.Collections.Shortcodes = Backbone.Collection.extend({ 
    model: V.Models.Shortcode, 
}); 

Wenn Iframe Last, Druckspeicher vom Server zur Sammlung:

$('#preview').on('load', function() { 

var ShortcodesCollection = new V.Collections.Shortcodes(Vision.ShortcodeStorage); 

var Preview = new V.Views.Preview({ 
    collection: ShortcodesCollection, 
    el: $('.container') 
}); 

Preview.render(); 

}); 

Vorschau mit Sammlung Render:

// Collection View in iframe 
V.Views.Preview = Backbone.View.extend({ 

initialize: function() { 
    this.collection.on('add', this.addOne, this); 
}, 

render: function() { 
    this.collection.each(this.addOne, this); 
    return this; 
}, 

addOne: function(ad) { 
    var shortcodeView = new V.Views.Shortcode({ model: ad }); 
    shortcodeView.render(); 
} 
}); 

Ansicht für jedes Modell:

// Shortcode View 
V.Views.Shortcode = Backbone.View.extend({ 
events: { 
    'click .widget' : 'SomeActionOnView' 
}, 

render: function(){ 
    //console.log(this.el); 
    //console.log(this.model.toJSON()); 
}, 

SomeActionOnView: function(){ 
    console.log(this); 
} 
}); 

Frage ist, wie V.Views.Shortcode an jedes Div mit "Widget" -Klasse anhängen, um Ereignisse zu binden. Vielen Dank!

+0

Möchten Sie alle Ansichten unter div mit Klasse "Widget" anhängen? – Nitesh

+0

@Nitesh möchte jede Ansicht an jedes Widget anhängen. – 20yco

+0

Müssen Sie für jede Ansicht ein neues div.widget erstellen? – Nitesh

Antwort

0

Können Sie das bitte versuchen?

V.Views.Shortcode = Backbone.View.extend({ 
    events: { 
     'click .widget' : 'SomeActionOnView' 
    }, 

    render: function(){ 
     //code here to write stuff of this.$el 
     $("div.widget").append(this.$el); 
    }, 

    SomeActionOnView: function(){ 
     console.log(this); 
    } 
    }); 
+0

warten Sie einen Moment bitte, versuchen – 20yco

+0

nein, das gibt nichts zurück – 20yco

+0

Es wird nur aktuelle Ansicht innerhalb div.widget anhängen. Wenn Sie auf Ihrer Benutzeroberfläche div.widget div haben, wird Ihre Ansicht dort angezeigt. Dies ist eine Backbone-Ansicht. Wenn Sie die aktuelle Ansicht zurückgeben möchten, können Sie dies am Ende zurückgeben. – Nitesh

Verwandte Themen