Comments (22)
А что не так с 3? Мне кажется, нормальный вариант - подписываться при показе и отписываться, когда скрываем
from noscript.
Кстати мы с @doochik обсуждали вариант, что некоторые события нужно отписывать на show/hide.
Так что это даже автоматически может быть будет.
from noscript.
А что не так с 3? Мне кажется, нормальный вариант - подписываться при показе и отписываться, когда скрываем
2 @mmoo : Не хочется писать это всё руками просто.
Кстати мы с @doochik обсуждали вариант, что некоторые события нужно отписывать на show/hide.
Так что это даже автоматически может быть будет.
2 @pasaran : некоторые это как?
На глобальные события, к примеру, сейчас можно подписаться только руками в коде.
Ну т.е. получается 2-ва фичреквеста:
- уметь подписывать на глобальные события view (хорошо когда сразу видно из декларации view, какие события его интересуют)
- при подписи на события иметь возможность указать, отключать это событие по hide или нет.
from noscript.
Некоторые -- это, например, window.onscroll и window.onresize.
Про глобальные не-dom события мы не говорили, но видимо это нужно.
2012/11/12 chestozo [email protected]
А что не так с 3? Мне кажется, нормальный вариант - подписываться при
показе и отписываться, когда скрываем2 @mmoo https://github.com/mmoo : Не хочется писать это всё руками
просто.Кстати мы с @doochik https://github.com/doochik обсуждали вариант, что
некоторые события нужно отписывать на show/hide.
Так что это даже автоматически может быть будет.2 @pasaran https://github.com/pasaran : некоторые это как?
На глобальные события, к примеру, сейчас можно подписаться только руками в
коде.Ну т.е. получается 2-ва фичреквеста:
- уметь подписывать на глобальные события view (хорошо когда сразу видно
из декларации view, какие события его интересуют)- при подписи на события иметь возможность указать, отключать это событие
по hide или нет.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/16#issuecomment-10287999.
from noscript.
@chestozo такие события можно декларировать как в backbone.
from noscript.
dom-события я в дарье это уже сделал
кастомные евенты туда же можно запихать
from noscript.
Все-таки непонятно, как отличать глобальные и локальные не-дом события.
И как отличать события, которые нужно вешать на init/destroy, от show/hide.
2012/11/12 Alexey Androsov [email protected]
dom-события я в дарье это уже сделал
кастомные евенты туда же можно запихать—
Reply to this email directly or view it on GitHubhttps://github.com//issues/16#issuecomment-10295186.
from noscript.
Ну есть два вариванта, всё на init/destroy, кроме scroll/resize, или всегда всё на hide/show. Второй проще, но будет постоянный bind/unbind.
А кастомные можно отличать префиксом или тем, что там будет один аргумент (они же глобальные).
Для dom-события "event selector", для custom-события "event"
from noscript.
Не, второй вариант плохой.
Нужен третий -- как-то задавать, на что именно делать bind/unbind.
Или две группы делать, как мы сначала хотели, или как-то синтаксисом
выделять.
2012/11/12 Alexey Androsov [email protected]
Ну есть два вариванта, всё на init/destroy, кроме scroll/resize, или
всегда всё на hide/show. Второй проще, но будет постоянный bind/unbind.А кастомные можно отличать префиксом или тем, что там будет один аргумент
(они же глобальные).
Для dom-события "event selector", для custom-события "event"—
Reply to this email directly or view it on GitHubhttps://github.com//issues/16#issuecomment-10297821.
from noscript.
@chestozo такие события можно декларировать как в backbone.
2 @shirokoff : приведи пример, пожалуйста.
from noscript.
Все-таки непонятно, как отличать глобальные и локальные не-дом события.
А разве есть разница, DOM / не-DOM?
Можно придумать какой-нибудь синтаксис дополнительный для этого, к примеру:
'photo:next' // local
'* photo:next' // global
'click .button' // local
'* click .button' // global
И как отличать события, которые нужно вешать на init/destroy, от show/hide.
Можно так:
no.View.register('super-view', {
events: {
// Bind on init, unbind on destroy.
init: {
'click .upload': function() { /*...*/ }
},
// Bind on show, unbind on hide.
show: {
// ...
}
}
});
from noscript.
Давайте так:
DOM-события можно разделять автоматически (info.events):
selector == window | document -> global, вешаются на show/hide
eventName == resize -> global, вешаются на show/hide
eventName == scroll -> bind, вешаются на init/destroy через $node.find().on(eventName, handler)
остальные -> delegate, вешаются на init/destroy через $node.on(eventName, selector, handler)
Для кастомных событий, которые no.events, такое сделать нельзя. Поэтому тут явно придется указывать init или show. Делаем отдельный хеш info.noevents со свойствами init:{}
и show: {}
* eventName
-> глобальное, вешается через no.Events.on
eventName
-> локальное, вешается через this.on
Все обработчики биндятся на инстанс View через handler.bind(this)
from noscript.
Реализация: done
from noscript.
Зафиксирую вчерашнее обсуждение.
Декларации объединяем в один объект, DOM-события от кастомных различаем с помощью предопределенного массива (blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup
).
Для DOM-событий init/show разделяем по правилам, описанным выше
Для кастомных событий вводим нотацию:
eventName@init .
- локальное событие на htmlinit
eventName@init
- глобальное событие на htmlinit
eventName@show .
- локальное событие на show
eventName@show
- глобальное событие на show
по-умолчанию, init
получается, что кастомные события нельзя будет называть так же как и нативные
from noscript.
Я думаю, что можно нотацию с @show
ввести и для DOM-событий, чтобы переопределить автоматическое разделение
from noscript.
Я думаю, что можно нотацию с @show ввести и для DOM-событий, чтобы переопределить автоматическое разделение
А может воспользоваться стандартными namespace-ами jquery?
click.show
click.init
Тогда их можно прямо пачками анбиндить, к примеру:
node.unbind('.init');
from noscript.
они сейчас так и работают, только ns от названия блока считается
from noscript.
Я думаю, что можно нотацию с @show ввести и для DOM-событий, чтобы переопределить автоматическое разделение
Я думаю да, можно и нужно. Вдруг пригодится.
Еще добавлю.
@init
является дефолтным вариантом.- У DOM-событий может быть селектор отличный от
.
.
from noscript.
Все сделал.
from noscript.
Провафлил я что-то про локальные и глобальные события, которые определяются по точке .
.
А почему решили сделать точку?
from noscript.
вроде хороший символ, не? :)
from noscript.
Ну он слабовидный, к примеру.
from noscript.
Related Issues (20)
- Не переходить по ссылке, если был preventDefault HOT 5
- Нет доков про интерполяцию в ns.layout HOT 2
- Падает ns.page.go на сервере HOT 5
- Унести ns.VERSION в build шаблоны HOT 1
- Улучшения работы с памятью в разрезе видов HOT 4
- show может быть вызван на дочерних видах до того, как родительский вид физически окажется в DOM'е. HOT 2
- Сломались тесты где-то по дороге HOT 5
- ns.Model.paramsRewrite ломает последовательность параметров в ключе HOT 15
- Затирается список моделей в коллекции после события ns-model-insert HOT 1
- Лишние подписки для события ns-model-insert и ns-model-remove для моделей неколлекций
- Нужно абортить ns.Update если в момент начала отрисовки у модели state=invalid HOT 30
- Асинхронный вид c невалидными моделями запускает на себе update() и получает error моду HOT 1
- ns.ViewCollection которая зависит от модели коллекции и ещё от какой-то невалидной модели - boom HOT 3
- `ns.page.history.replace` превращает историю в каламбур
- Не гарантируется консистентность перерисовки приложения HOT 3
- После перерисовки верхнеуровневого вида со вложенным боксом внутри бокса оказывается 2 ноды вложенного вида
- Поддержать отправку запроса в виде JSON
- Зафиксировать версию [email protected]
- Поддержать serverId для запроса моделей под другим именем
- JSON request format replaces spaces with pluses HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from noscript.