لا يتم إطلاق الخاصية المحسوبة التي يتم ملاحظتها إذا تم تغييرها مرتين على التوالي
-
12-11-2019 - |
سؤال
لدي جمرة.الكائن الذي أنا تحديث مع خاصية مثل أدناه ، ولكن إذا قمت بتغيير بريميريديمو مرتين على التوالي ، فإنه لا يطلق النار ، ولكن إذا قمت بتغيير بريميريديمو ، ثم معدل ، فإنه لا يتغير.أنا في حيرة لماذا هذا وكيف يمكنني إصلاحه.
dependantChanged: function() {
console.log('Firing change');
this.get('_update')(this);
}.observes('primaryDemo', 'Rate', 'Totals'),
تحديث:لذا فإن الإجابة الأولى والكمان جعلتني أفكر في ماهية المشكلة ، ويرجع ذلك إلى تغيير خاصية على كائن وليس الكائن نفسه.أعتقد إمبر يفعل الاختيار التجزئة لمعرفة ما إذا كان هناك فرق.في حالتي أنا بالفعل باستخدام تسطير سفلي ، لذلك أنا فقط تغيير الخاصية ، ثم استخدام _.استنساخ (تجريبي) قبل القيام بالمجموعة.أفضل عدم القيام بذلك ، لذلك سأنتظر لمعرفة ما إذا كان هناك حل أكثر أناقة قبل إغلاق هذا.
المحلول
لا تحتاج إلى تعيين primaryDemo
مجددا.في ال مثال هذا لا يفعل شيئا.تحتاج إلى إجبار أخبر إمبر لإخطار المراقب الخاص بك. انظر هذا كمان...
var demo = { Imps: 1, Demo: { Id: 2 } }
var obj = Ember.Object.create({
dependantChanged: function() {
console.log('Firing change');
}.observes('primaryDemo', 'Rate', 'Totals'),
});
obj.set('primaryDemo', demo);
demo.Imps = 2;
obj.set('primaryDemo', demo);
// Notify observers on obj#primaryDemo
Ember.notifyObservers(obj, 'primaryDemo');
نصائح أخرى
يمكنك إعطاء مزيد من التفاصيل?أنا خلقت جسفيدل بسيطة http://jsfiddle.net/JjbXb/ من وصفك ولكن تغيير نفس الخاصية على التوالي ، كما تقول ، يعمل.
هل أنت متأكد من قيمة primaryDemo
يختلف في حياتك 2 مكالمات متتالية?