рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рдЗрд╕ рд╕рдордп рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЕрдкрдиреЗ рдЕрджреНрдпрддрди рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЖрдЧ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛ рдХрд┐ рдирдпрд╛ рдорд╛рди _latestValue рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдзреНрдп рддрддреНрд╡ рдкрд░ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореЗрд░реЗ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдпрд╣ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрд╡рдд: рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рд╣реИ)ред
рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдкрд░ "рдмрд▓" рдзреНрд╡рдЬ рд╣реЛрдЧрд╛:
myObservable ("рдирдпрд╛ рдорд╛рди", /* рдмрд▓ = */ рд╕рддреНрдп)
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрд░ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ?
рдЪреАрдпрд░реНрд╕, рдПрдВрдбреНрд░рдпреВред
рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓реНрд╕ рдореЗрдВ рдПрдХ valueHasMutated
рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ:
myObservable.valueHasMutated()
рдЕрджреНрдпрддрди рд╣реЛрдиреЗ рдкрд░ рдЖрдк рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХреЛ рд╣рдореЗрд╢рд╛ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
myObservable = ko.observable().extend({notify: 'always'});
myObservable("new value"); // will notify even if the value is already "new value"
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЗрди рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╣реЛрдирд╛ рд╢рд╛рдпрдж рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред
valueHasMutated рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВ :-)
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓реНрд╕ рдореЗрдВ рдПрдХ
valueHasMutated
рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ:
myObservable.valueHasMutated()