Code Monkey home page Code Monkey logo

Comments (22)

mmoo avatar mmoo commented on August 10, 2024

А что не так с 3? Мне кажется, нормальный вариант - подписываться при показе и отписываться, когда скрываем

from noscript.

pasaran avatar pasaran commented on August 10, 2024

Кстати мы с @doochik обсуждали вариант, что некоторые события нужно отписывать на show/hide.
Так что это даже автоматически может быть будет.

from noscript.

chestozo avatar chestozo commented on August 10, 2024

А что не так с 3? Мне кажется, нормальный вариант - подписываться при показе и отписываться, когда скрываем

2 @mmoo : Не хочется писать это всё руками просто.

Кстати мы с @doochik обсуждали вариант, что некоторые события нужно отписывать на show/hide.
Так что это даже автоматически может быть будет.

2 @pasaran : некоторые это как?
На глобальные события, к примеру, сейчас можно подписаться только руками в коде.

Ну т.е. получается 2-ва фичреквеста:

  1. уметь подписывать на глобальные события view (хорошо когда сразу видно из декларации view, какие события его интересуют)
  2. при подписи на события иметь возможность указать, отключать это событие по hide или нет.

from noscript.

pasaran avatar pasaran commented on August 10, 2024

Некоторые -- это, например, 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-ва фичреквеста:

  1. уметь подписывать на глобальные события view (хорошо когда сразу видно
    из декларации view, какие события его интересуют)
  2. при подписи на события иметь возможность указать, отключать это событие
    по hide или нет.


Reply to this email directly or view it on GitHubhttps://github.com//issues/16#issuecomment-10287999.

from noscript.

shirokoff avatar shirokoff commented on August 10, 2024

@chestozo такие события можно декларировать как в backbone.

from noscript.

doochik avatar doochik commented on August 10, 2024

dom-события я в дарье это уже сделал
кастомные евенты туда же можно запихать

from noscript.

pasaran avatar pasaran commented on August 10, 2024

Все-таки непонятно, как отличать глобальные и локальные не-дом события.
И как отличать события, которые нужно вешать на 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.

doochik avatar doochik commented on August 10, 2024

Ну есть два вариванта, всё на init/destroy, кроме scroll/resize, или всегда всё на hide/show. Второй проще, но будет постоянный bind/unbind.

А кастомные можно отличать префиксом или тем, что там будет один аргумент (они же глобальные).
Для dom-события "event selector", для custom-события "event"

from noscript.

pasaran avatar pasaran commented on August 10, 2024

Не, второй вариант плохой.
Нужен третий -- как-то задавать, на что именно делать 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 avatar chestozo commented on August 10, 2024

@chestozo такие события можно декларировать как в backbone.

2 @shirokoff : приведи пример, пожалуйста.

from noscript.

chestozo avatar chestozo commented on August 10, 2024

Все-таки непонятно, как отличать глобальные и локальные не-дом события.

А разве есть разница, 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.

doochik avatar doochik commented on August 10, 2024

Давайте так:
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.

doochik avatar doochik commented on August 10, 2024

Реализация: done

from noscript.

doochik avatar doochik commented on August 10, 2024

Зафиксирую вчерашнее обсуждение.
Декларации объединяем в один объект, 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.

doochik avatar doochik commented on August 10, 2024

Я думаю, что можно нотацию с @show ввести и для DOM-событий, чтобы переопределить автоматическое разделение

from noscript.

chestozo avatar chestozo commented on August 10, 2024

Я думаю, что можно нотацию с @show ввести и для DOM-событий, чтобы переопределить автоматическое разделение

А может воспользоваться стандартными namespace-ами jquery?

click.show
click.init

Тогда их можно прямо пачками анбиндить, к примеру:

node.unbind('.init');

from noscript.

doochik avatar doochik commented on August 10, 2024

они сейчас так и работают, только ns от названия блока считается

from noscript.

pasaran avatar pasaran commented on August 10, 2024

Я думаю, что можно нотацию с @show ввести и для DOM-событий, чтобы переопределить автоматическое разделение

Я думаю да, можно и нужно. Вдруг пригодится.

Еще добавлю.

  • @init является дефолтным вариантом.
  • У DOM-событий может быть селектор отличный от ..

from noscript.

doochik avatar doochik commented on August 10, 2024

Все сделал.

from noscript.

chestozo avatar chestozo commented on August 10, 2024

Провафлил я что-то про локальные и глобальные события, которые определяются по точке ..
А почему решили сделать точку?

from noscript.

doochik avatar doochik commented on August 10, 2024

вроде хороший символ, не? :)

from noscript.

chestozo avatar chestozo commented on August 10, 2024

Ну он слабовидный, к примеру.

from noscript.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.