آپدیت نشدن View و ثابت ماندن مقدار فیلد Input در Angular
امروز
تو جلسات باز تبریز در مورد Angular
بحث میکردیم که
از دوستان سؤالی داشتن راجع به تغییر view
و آپدیت شدنش تو
input و جاهایی
که استفاده شده بود و یه همچین چیزی بود
:)
واسه
تستش هم مقدار مدلمون رو تو همون view
برابر یه مقداری
کردیم که متأسفانه وقتی مقدار input
رو تغییر می دادیم
هیچ اتفاقی نمی افتاد!
در
حقیقت دلیل اینکه میخواستیم input
رو تغییر بدیم این
بود که مقدار مدلمون تغییر کنه و view
هم آپدیت بشه.
متأسفانه
نشد و سؤال به این روش بی جواب موند!
واسه
تست این موضوع که آیا واقعا مقدار آپدیت
نمی شه یه کد کوچولو موچولویی نوشتم که
خوب، جوابمو گرفتم.
البته
قبلش هم یه سری تصورات مبنی بر اینکه آپدیت
می شه ولی وقت نمایش مقداری که مستقیم در
view ست شده
دوباره اعمال می شه که باعث می شه مقدار
جدید نادیده گرفته شه و همان مقداری که
مستقیم ست شده بود در نظر گرفته شه تو کلم
بود و فقط باید تست می شدن (البته
راه خونه همراه سعید جان به این نتیجه
رسیدیم)
و
از طرفی چون با two-way data binding طرف
هستیم مقدار مدلی که در view تغییر
میکرد و هم در بقیه قسمتها که از مدل
استفاده شده بود هم طبیعتاً باید تغییر
می کرد- در
حقیقت همان input مان.
که
باعث می شه فکر کنیم مقدار تغییر نکرده-
در حالی که تغییر
میکرد ولی دوباره با مقدار درج شده در
صفحه (hard code شده)
جایگزین می شد.
یعنی مقدار قبلی!
کدی
که نوشتم که در حقیقت مدلمون رو کنترل می کنه، watch می
کنه و اگه تغییری کرد فانکشن مورد نظرمون
رو صدا می زنه و مقدار جدید رو بهش می ده.
که
مقدار جدید رو هم به صفحه اضافه کردم
که نتیجه رو ببینم.
اینطوری
بود که متوجه شدم مقدار جدید اعمال می شه
ولی همان لحظه بعدش، وقتی می خواد نمایش
بده، مقدار تعیین شده در view دوباره
اعمال می شه و مقدار جدید با مقدار قبلی
جایگزین می شه که باعث می شه فکر کنیم
مقدار تغییر نکرده و اینا.
کد رو هم واسه تست لینک زیر قرار دادم: