вот глянь на юишку
контроллер:
<script src='http://localhost/ui/build/ui.js'></script>
<script>
ui.controller('User', {
q: 11,
plus: function () {
this.q++
}
})
</script>
<div>{{User.q}}</div>
<button on-click="User.q++">plus++</button>
компонент:
<script src='http://localhost/ui/build/ui.js'></script>
<script>
ui.component('ui-ololo', {
cnt: 11,
template: '<span on-mousemove="this.cnt++">span {{this.cnt}} </span>'
})
</script>
<ui-ololo data-repeat='5'></ui-ololo>
можно даже попрограммировать на html:
<script src='http://localhost/ui/build/ui.js'></script>
<body on-mousemove='x=$event.clientX, y=$event.clientY'>
x: {{x}} y:{{y}}
<button data-if='x > 195' style='height:{{y}}px'>не нажмешь ;)</button>
</body>
И кстати, у тебя распространенная ошибка новичка, описывать ВНУТРЕННЕЕ УСТРОЙСТВО компонента, и ВНЕШНЕ его использовать это разные вещи. ТО есь в яваскрипте и шаблонах нужно опсиывать внутреннее устройство компонента, а в html лишь его использовать, дерагя за нужные рычажки и настроечки. То есть вначале мы описали кубик лего, а потом его используем где хотим. И вот это использование ты ошибочно и называешь "программированием в html".
То есть код функции мы пишем в яваскрипте, а используем в html, данные хранятся в яваскрпте, а рисуем в html.
Логика и программирование в яваскрипте. Вьюха и отображение html.
То есть датабиндинг должен быть в том месте
КУДАААА мы рисуем, а не откуда мы рисуем.
Иначе есть вот какие минусы:
1) это неудобно, ну да идиотам может и удобно но профессионалам не удобно
2) поменял верстку, лезь и в яваскрипт ищи что там могло в эту верстку пытаться нарисовать и менай там селекторы
3) нечайно назвал класс одинакого, он подошел под селектор, теперь что то из яваскрипта в него рисует и ты не можешь понять с какого хрена, ты ведь не просил.
4) Читая верстку непонятно что где в ней будет происходить, где статические даныне а где класс изменяться будет например, непонятно к чему привязан инпат и.т.п.
Ну то есть датабиндинг должен быть в месте КУДА мы рисуем, а не откуда рисуем, почему? Потому что связь "один к многим". Это как не перент решает для кого он будет перентом и кто его чайлдами, а чайлды вызывают его метод appendsChild чтобы связаться с ним и добавиться в его список. потому что связь один к многим.
иными словами у тебя из одного места могут разные части разметки попытатсья данные взять.