是否可以更新組件的所有實例的屬性?Ember JS - 更新組件的所有實例的屬性
如果我在頁面上有10個組件的實例,我想將currentTrack屬性設置爲false。這可能嗎?它可以從一個組件內部完成嗎?
import Ember from 'ember';
export default Ember.Component.extend({
currentTrack: true,
});
我用灰燼2.12
是否可以更新組件的所有實例的屬性?Ember JS - 更新組件的所有實例的屬性
如果我在頁面上有10個組件的實例,我想將currentTrack屬性設置爲false。這可能嗎?它可以從一個組件內部完成嗎?
import Ember from 'ember';
export default Ember.Component.extend({
currentTrack: true,
});
我用灰燼2.12
您可以使用Ember.Evented這個用例。
這裏有一個simple twiddle它。
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 - 您可以使用相同的操作如上,它將被應用於所有組件
您如何創建條目以滿足您試圖實現的任何事情。
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}}>
我想你必須自己推出這個。在'init'鉤子中,將該實例註冊到全局數組或其他東西中。然後提供一個通過他們所有的類級別的方法,並做你想做的任何事情。 – 2017-04-20 14:11:30