Я столкнулся с «изменить событие не обжиг» вопрос о Backbone.js =/Backbone.js: меняются не обстреле model.change()
Вот мой взгляд на модели пользователя:
window.UserView = Backbone.View.extend({
...
initialize: function()
{
this.model.on('destroy', this.remove, this);
this.model.on('change', function()
{
console.log('foo');
});
},
render: function(selected)
{
var view = this.template(this.model.toJSON());
$(this.el).html(view);
return this;
},
transfer: function(e)
{
var cas = listofcas;
var transferTo = Users.getByCid('c1');
var transferToCas = transferTo.get('cas');
this.model.set('cas', cas);
console.log('current model');
console.log(this.model);
//this.model.change();
this.model.trigger("change:cas");
console.log('trigger change');
transferTo.set('cas', transferToCas);
console.log('transferto model');
console.log(transferTo);
//transferTo.change();
transferTo.trigger("change:cas");
console.log('trigger change');
}
});
Здесь, модель User:
window.User = Backbone.Model.extend({
urlRoot: $('#pilote-manager-app').attr('data-src'),
initialize: function()
{
this.set('rand', 1);
this.set('specialite', this.get('sfGuardUser').specialite);
this.set('name', this.get('sfGuardUser').first_name + ' ' + this.get('sfGuardUser').last_name);
this.set('userid', this.get('sfGuardUser').id);
this.set('avatarsrc', this.get('sfGuardUser').avatarsrc);
this.set('cas', new Array());
if (undefined != this.get('sfGuardUser').SignalisationBouclePorteur) {
var cas = new Array();
_.each(this.get('sfGuardUser').SignalisationBouclePorteur, function(value)
{
cas.push(value.Signalisation);
});
this.set('cas', cas);
}
}
});
В модели пользователя, есть "саз" атрибут, который представляет собой массив объектов.
Я читал в других разделах, которые меняют события, это не огонь на model.set, если атрибуты не являются значением.
Итак, я пытаюсь вызвать событие изменения с помощью метода model.change(). Но у меня нет журнала «foo» в моей консоли ...
На данный момент я решил эту проблему, добавив атрибут «rand» в свою модель. Я установил его в новое значение, когда хочу запустить событие change =/ – Atyz
Хе-хе. Временное решение звучит немного взломанно. :-) Если ваш атрибут cas действительно является атрибутом модели пользователя, изменение этого путем выполнения 'User.set ({cas: [array]}) должно запускать событие изменения, которое я думаю. Он по-прежнему взломан, но вы всегда можете использовать 'model.change()' для ручного запуска изменения и изменения: событие атрибута. Вы не передаете '{silent: true}' где угодно? Можем ли мы увидеть ваш код модели пользователя? – jmk2142
Hi Orangewarp, thx для вашего ответа :) Я добавляю модель User на сообщение, это очень просто. Как говорят другие ppl, магистраль не вызывает событие изменения, если атрибут не является значением. И я уже пытаюсь запустить вручную model.change(), он не работает, как я сказал ^^ – Atyz