如何绑定集合中给定项的属性?

时间:2012-03-24 20:53:13

标签: ember.js

我在Ember.ArrayController中有一个视频列表,我使用{{each}}帮助器在我的视图上渲染,视频对象有一个url属性:

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

我还为每个视频都有一个播放按钮。我想要这个按钮来调用我的视频播放器的播放方法并给出所选项目的网址。这是我的视频播放器:

App.videoPlayer = Em.Object.create({

    url: null,

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

});

点击按钮后如何将网址发送到播放机?我无法弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:3)

有些事情应该有效:

  {{#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);
    }

});

重要的部分是:contentBinding="this"。这会将您收藏中的单个项目的内容发送到您的视图以供使用。