2017-04-20 48 views
1

是否可以更新組件的所有實例的屬性?Ember JS - 更新組件的所有實例的屬性

如果我在頁面上有10個組件的實例,我想將currentTrack屬性設置爲false。這可能嗎?它可以從一個組件內部完成嗎?

import Ember from 'ember'; 

export default Ember.Component.extend({ 

    currentTrack: true, 

}); 

我用灰燼2.12

+1

我想你必須自己推出這個。在'init'鉤子中,將該實例註冊到全局數組或其他東西中。然後提供一個通過他們所有的類級別的方法,並做你想做的任何事情。 – 2017-04-20 14:11:30

回答

0

template.hbs

{{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> 

controller.js

currentTrack: true, 
actions: { 
    makeAllcurrentTracksFalse() {this.set('currentTrack', false)} 
} 

或在您的成分,name.js - 您可以使用相同的操作如上,它將被應用於所有組件

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}} 

//我的歌組分.js

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