2012-03-24 6 views
1

ich eine Liste von Videos in einem Ember.ArrayController, die ich auf meiner Ansicht nach machen die {{jedes}} Helfer wie diese verwendet wird, hat Video-Objekt eine Eigenschaft url:Wie binden Sie die Eigenschaft eines bestimmten Elements in einer Sammlung?

{{#each App.videosController}} 
       <li>{{url}}</li> 
       {{#view Em.Button action="play" target="App.videoPlayer"}}Play{{/view}} 
    {{/each}} 

Ich habe auch eine Play-Taste für jedes Video Ich möchte, dass diese Schaltfläche die Wiedergabemethode meines Videoplayers aufruft und die URL des ausgewählten Elements angibt. Hier ist mein Video-Player:

App.videoPlayer = Em.Object.create({ 

    url: null, 

    play: function(e){ 
     this.set('url',e.context); // it doesn't work'!!! 
    } 

}); 

Wie kann ich die URL meiner Spieler senden, wenn ich auf den Button klicken? Ich kann nicht herausfinden, wie das geht.

Antwort

3

Etwas nach dem Vorbild dieser sollte funktionieren:

{{#each App.videosController}} 
       <li>{{url}}</li> 
       {{#view Em.Button contentBinding="this" action="play" target="App.videoPlayer"}}Play{{/view}} 
    {{/each}} 

App.videoPlayer = Em.Object.create({ 
    content: null, 
    url: null, 

    play: function(e){ 
     var itemUrl = Ember.getPath(this, 'content.url'); 
     Ember.set(this, 'url', itemUrl); 
    } 

}); 

Der wichtigste Teil ist: contentBinding="this". Dadurch wird der Inhalt des einzelnen Elements in Ihrer Sammlung zur Verwendung an Ihre Ansicht gesendet.

+0

Danke. Es funktioniert jetzt, ich ändere nur Ember.getPath (this, ...) von Ember.getPath (e, ...) – jrabary