لا يتم إطلاق الخاصية المحسوبة التي يتم ملاحظتها إذا تم تغييرها مرتين على التوالي

StackOverflow https://stackoverflow.com/questions/9445676

  •  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 مكالمات متتالية?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top