Мое веб-приложение построено с использованием Ember.JS и Firebase для хранения данных. Он также служит для поддержки мобильного приложения. Пользователи могут использовать мобильное приложение для отправки «справки-запроса» - приложение манипулирует непосредственно с записями Firebase. Когда изменение сделано, администратор веб-приложения может увидеть уведомление на экране. Это прекрасно работает. Теперь я хочу добавить звук к этому уведомлению.Ember database новое событие записи и наблюдатель
Моя общая идея - решить проблему, чтобы добавить наблюдателя, который будет запущен, когда в базу данных будет добавлена новая запись типа запроса справки.
Я нашел 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')
});
Мой Второй подход: Сотворил - никогда не вызывается при внесении изменений в Firebase непосредственно.
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');
должен быть
this.set('shouldPlay',false);
Это, как он, наконец, работал.
Вы проверяли крючки на Ember модели, как [didLoad] (http://emberjs.com/api/data/classes/DS.Model.html)? – Keo
Пока вы не сказали мне тоже. Оно работает! Можете ли вы представить его в качестве ответа? –