آپدیت نشدن View و ثابت ماندن مقدار فیلد Input در Angular


امروز تو جلسات باز تبریز در مورد Angular بحث می‌کردیم که از دوستان سؤالی داشتن راجع به تغییر view و آپدیت شدنش تو input و جاهایی که استفاده شده بود و یه همچین چیزی بود :)

واسه تستش هم مقدار مدلمون رو تو همون view برابر یه مقداری کردیم که متأسفانه وقتی مقدار input رو تغییر می دادیم هیچ اتفاقی نمی افتاد!
در حقیقت دلیل اینکه می‌خواستیم input رو تغییر بدیم این بود که مقدار مدلمون تغییر کنه و view هم آپدیت بشه.

متأسفانه نشد و سؤال به این روش بی جواب موند!

واسه تست این موضوع که آیا واقعا مقدار آپدیت نمی شه یه کد کوچولو موچولویی نوشتم که خوب، جوابمو گرفتم.

البته قبلش هم یه سری تصورات مبنی بر اینکه آپدیت می شه ولی وقت نمایش مقداری که مستقیم در view ست شده دوباره اعمال می شه که باعث می شه مقدار جدید نادیده گرفته شه و همان مقداری که مستقیم ست شده بود در نظر گرفته شه تو کلم بود و فقط باید تست می شدن (البته راه خونه همراه سعید جان به این نتیجه رسیدیم)

و از طرفی چون با two-way data binding طرف هستیم مقدار مدلی که در view تغییر می‌کرد و هم در بقیه قسمت‌ها که از مدل استفاده شده بود هم طبیعتاً باید تغییر می کرد- در حقیقت همان input مان.
که باعث می شه فکر کنیم مقدار تغییر نکرده- در حالی که تغییر می‌کرد ولی دوباره با مقدار درج شده در صفحه (hard code شده) جایگزین می شد. یعنی مقدار قبلی!

کدی که نوشتم که در حقیقت مدلمون رو کنترل می کنه، watch می کنه و اگه تغییری کرد فانکشن مورد نظرمون رو صدا می زنه و مقدار جدید رو بهش می ده.
که مقدار جدید رو هم به صفحه اضافه کردم که نتیجه رو ببینم.

اینطوری بود که متوجه شدم مقدار جدید اعمال می شه ولی همان لحظه بعدش، وقتی می خواد نمایش بده، مقدار تعیین شده در view دوباره اعمال می شه و مقدار جدید با مقدار قبلی جایگزین می شه که باعث می شه فکر کنیم مقدار تغییر نکرده و اینا.

کد رو هم واسه تست لینک زیر قرار دادم:

پست‌های معروف از این وبلاگ

رویدادها در MySQL

لیست شهر و استان‌های ایران

مدیریت مخارج، برنامه‌ای برای اندروید