Ember JS - 更新组件的所有实例的属性

时间:2017-04-20 14:06:40

标签: javascript ember.js

是否可以更新组件的所有实例上的属性?

如果我在页面上有10个以下组件的实例,我想在所有这些实例上将currentTrack属性设置为false。这可能吗?可以从其中一个组件内部完成吗?

List<String> itor2 = new LinkedList();
for(String s : itor)
    itor2.add(s);

我正在使用Ember 2.12

3 个答案:

答案 0 :(得分:2)

您可以将Ember.Evented用于此用例。

此处有一个simple twiddle

答案 1 :(得分:0)

template.hbs

pip install humanize

import humanize
print( humanize.naturalsize( 91157384 ) )
91.2 MB

controller.js

{{your-component-name currentTrack=currentTrack}}
{{your-component-name currentTrack=currentTrack}}
{{your-component-name currentTrack=currentTrack}}
// btn for disabling 
<a href="#" class="btn" onclick={{action 'makeAllcurrentTracksFalse'}}>To false</a>

或在your-component-name.js中 - 您可以使用与上述相同的操作,它将应用于所有组件

答案 2 :(得分:0)

如何为您想要实现的目标创建条目。

const SongEntry = Ember.Object.extend({ 

});

要创建一个您要调用的条目(可能会将一首歌添加到播放列表中?)

  songs: [],

  addNewSongToList: function(songName) {
       const newEntry = MyMusicEntry.create({
           isCurrent: false,
           title: songName
       });

       this.get('songs').pushObject(newEntry);
  },

  activateNewSong: function(newSongToActivate) {
     this.get('songs').forEach(s => s.set('isCurrent', false);

     newSongToActivate.set('isCurrent', true)
  }

模板看起来像这样

 {{each songs as |song|}}
     {{my-song-component songEntry=song changeSong=(action "activateNewSong")}}
 {{/each}}

//我的松-component.js

<div class="song-layout" {{action "changeSong" song}}>