Skip to content

Loading…

Не выставлять атрибут у модели в то же самое значение #150

Open
Lapple opened this Issue · 9 comments

4 participants

@Lapple
yandex-ui member

Предположим, что есть какой-то атрибут у модели, который выставляется через View, например:

// ...где-то в коде View...
this.models.model.set('.selected', isSelected);

Если View при этом подписан на изменения .selected, перерисовка произойдет даже при сохранении предыдущего значения (скажем, два раза подряд получилось, что isSelected === true). Сделаем так:

// ...где-то в коде View...
if (this.models.model.get('.selected') !== isSelected) {
    this.models.model.set('.selected', isSelected);
}

Чтобы не писать это каждый раз, может быть стоит завести в model.set() проверку хотя бы на строгое равенство?

@edoroshenko

Я за

@doochik
yandex-ui member

Надо только сначала глянуть, где это правильнее делать: у нас или в no.jpath

@edoroshenko

у нас конечно. А то как ты поймёшь, изменил что-то jpath или нет?

@doochik
yandex-ui member

Дык jpath.set может попробовать вернуть true/false.
Теоретически в jpath будет лучше, потому что не надо два раза компилить jpath и делать выборку (сначала в get, потом в set)

@edoroshenko

он ещё не умеет возвращать true/false?

@pasaran

Время компиляции ничего не стоит. Ну разве что ты сотни и тысячи разных jpath'ов создаешь. И очень часто.

jpath.set может в лучше случае вернуть старое значение, а уж сравнивать вы его сами будете.
Я вот точно не хочу тащить туда логику по глубокому сравнению двух объектов.

@doochik
yandex-ui member

Ну две выборки точно стоят.
Мы пока про глубокое сравнение не говорим, просто ====

@pasaran

Ну а когда захотите будет поздно )
Чтобы поздно не стало, нужно возвращать старое значение, а не true/false.
В model.set его можно будет сравнить и действовать по обстоятельствам.

@edoroshenko

плюсую против true/false

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.