рдбрд╛рд░реНрдЯ: рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рд╡реЗрдм рдШрдЯрдХ


рд╡реЗрдм рдШрдЯрдХ Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рдирдпрд╛ рд╡реЗрдм рдорд╛рдирдХ рд╣реИред рдХреБрдЫ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдПрдХ рдкреНрд░рд╡реГрддреНрддрд┐ рдмрди рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдФрд░ рдореИрдВ, рд╡реНрдпрд╛рдкрд╛рд░ рдореЗрдВ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╢рд╛рдпрдж рдЗрд╕ рд░рд╛рдп рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред
рдорд╛рдирдХ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг: habrahabr.ru/post/152001

рдбрд╛рд░реНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдбрд╛рд░реНрдЯ рдореЗрдВ рдореЗрд░реА рджрд┐рд▓рдЪрд╕реНрдкреА рджреЛрдЧреБрдиреА рд╣реЛ рдЧрдИред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрд╛ рдХрд┐ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЪрдорддреНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдм рддрдХ рдпрд╣ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдбрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдордмреИрдХ рд╣реЛрдЧрд╛ред

рдпрд╣ рдкреЛрд╕реНрдЯ рдиреЙрдХрдЖрдЙрдЯ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд┐рд╕реА рдХреЛ рднреА рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧреАред js рдпрд╣ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рджреЗрд╢реА рдЬреЗрдПрд╕ рдореЗрдВред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╕ рдПрдХ рдорд┐рдиреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛: рдПрдХ рдЯрд╛рдЗрдо рдЯреНрд░реИрдХрд░ред рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ред (рд╡реИрд╕реЗ, рдкрд░рд┐рдЪрд┐рдд, "рдРрд╕рд╛-рддреЛ рдерд╛ред" рдЙрд╕ рд╕рдордп, рдбрд╛рд░реНрдЯ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдкрд╛рджрдХ рджреЛрдиреЛрдВ рдХрдЪреНрдЪреЗ рдереЗред)

рдХреЛрдб: github.com/Leksat/time_tracker
рд▓рд╛рдЗрд╡ рд╕рдВрд╕реНрдХрд░рдг: leksat.me/sites/default/files/time_tracker/web/out/_nain.html.html

рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ timeTracker рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреА рдореБрдЦреНрдп рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпрд╛рдБ: рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рд╕рд╣реЗрдЬрдирд╛ред tasks рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ tasks рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ, рдкреНрд░рдХрд╛рд░ Task рдХреА рд╡рд╕реНрддреБрдПрдВред

рдФрд░ рдпрд╣рд╛рдВ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреЛрдб рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ ред

 <div id="main-wrapper" class="{{timeTracker.wrapperClass}}"> <div id="time-tracker"> <div id="tools"> <button data-action="click:timeTracker.createNewTask">New Task</button> <button data-action="click:timeTracker.deleteAllTasks">Clear all</button> </div> <div id="tasks"> <template iterate='task in timeTracker.tasks'> <div class="task"> <input class="name" type="text" data-bind="value:task.name" /> <input class="time" type="text" data-bind="value:task.time" disabled="{{task.working}}" /> <button data-action="click:task.toggleState">{{task.toggleStateLabel}}</button> <button data-action="click:task.delete">Delete</button> </div> </template> </div> </div> </div> 


рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВред

Source: https://habr.com/ru/post/In159567/


All Articles