내 웹 앱은 Ember.JS 및 Firebase를 사용하여 데이터를 저장합니다. 또한 모바일 앱의 백엔드 역할을합니다. 사용자는 모바일 앱을 사용하여 '도움 요청'을 보낼 수 있습니다. 앱은 Firebase 레코드로 직접 조작합니다. 웹 애플 리케이션의 관리자가 변경되면 화면의 알림을 볼 수 있습니다. 그건 잘 작동합니다. 이제이 알림에 소리를 추가하고 싶습니다.Ember 데이터베이스 새 레코드 이벤트 및 옵저버
필자는 헬프 요청 유형의 새로운 레코드가 데이터베이스에 추가 될 때 트리거 될 옵저버를 추가하기 위해이 문제를 해결하려고 일반적인 생각을했습니다.
내가 어떻게하는지 설명하는 종류의 post을 발견했지만 ArrayControler와 같은 사용되지 않는 메소드를 사용하고 있습니다.
레코드의 속성이 수정 될 때 트리거되는 도우미 요청 모델에 간단한 관찰자를 추가했습니다. 그건 잘 작동하지만 실제 솔루션보다는 해킹 것 같습니다.
큰 질문은 다음과 같습니다. 1. 새로운 레코드가 Firebase에서 생성되었는지 확인하기 위해 구독 할 수있는 콜백, 이벤트 또는 알림이 있습니까? 그렇다면 어떻게 구독하나요?
import DS from 'ember-data';
export default DS.Model.extend({
device: DS.attr('string'),
userName: DS.attr('string'),
locationName: DS.attr('string'),
type: DS.attr('string'),
fullNameChanged: function() {
// deal with the change
console.log("FULL NAME");
}.observes('device').on('init')
});
제 2의 접근 방식
: 만들기나요 - 변경이 직접 중포 기지로 만들 때 호출되지 않습니다.didCreate:function(){
console.log("Created");
var mySound = soundManager.createSound({
url: 'assets/beep22.mp3'
});
mySound.play();
},
갱신나요 -라고하지만 속성은
didUpdate:function(){
console.log("Updated");
console.log((this.get('shouldPlay')));
}
나요로드
유지되지 않습니다 - 가장 좋은 방법이 될 듯하지만, 변경 사항이 유지되지 않습니다 :(didLoad:function(){
console.log("Did load");
if(this.get('shouldPlay')){
var mySound = soundManager.createSound({
url: 'assets/beep22.mp3'
});
mySound.play();
this.set('shouldPlay','false');
this.save().then(() => {
console.log("saved");
},(error)=>{
console.log(error);
});
}
}
을업데이트 :
이가 드디어 일을 어떻게
this.set('shouldPlay',false);
해야한다.
[didLoad] (http://emberjs.com/api/data/classes/DS.Model.html)와 같은 엠버 모델에서 후크를 확인 했습니까? – Keo
나 한테도 말하지 않을 때까지. 그것은 작동합니다! 대답으로 제출할 수 있습니까? –