Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ns.Model.paramsRewrite ломает последовательность параметров в ключе #643

Open
chestozo opened this issue Feb 13, 2017 · 15 comments
Assignees

Comments

@chestozo
Copy link
Member

Пример:

ns.Model.define('ppp', {
    params: {
        'p1': null,
        'p2': null,
        'p3': null
    },

    paramsRewrite: function(params) {
        if (true) {
            params.p2 = 'yes'
        }
        return params;
    }
});

console.log(
    ns.Model.get('ppp', { p1: 1, p3: 3 }).key,
    ns.Model.get('ppp', { p1: 1, p2: 'yes', p3: 3 }).key
);

Выводится:

model=ppp&p1=1&p3=3&p2=yes // !
model=ppp&p1=1&p2=yes&p3=3

Ожидаю:

model=ppp&p1=1&p2=yes&p3=3
model=ppp&p1=1&p2=yes&p3=3
@chestozo
Copy link
Member Author

/cc @vitkarpov

@vitkarpov
Copy link
Member

А почему ты ожидаешь порядок? Ты где-то в тестах смотришь на ключ? Кажется, это плохой вариант, лучше через АПИ ключ получать

@chestozo
Copy link
Member Author

ммм какое api?

@vitkarpov
Copy link
Member

getKeyAndParams

@chestozo
Copy link
Member Author

так это оно же, просто оно внутри вызывается

@chestozo
Copy link
Member Author

@chestozo chestozo self-assigned this Feb 13, 2017
@vitkarpov
Copy link
Member

vitkarpov commented Feb 13, 2017

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

@vitkarpov
Copy link
Member

Т.е. нельзя завязываться на определенный вид ключа

@vitkarpov
Copy link
Member

Разве нет?

@chestozo
Copy link
Member Author

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

@chestozo
Copy link
Member Author

я просто хочу, чтобы ns.Model.get({ p1: 1, p2: 2 }) выдавал всегда тоже самое, что и ns.Model.get({ p2: 2, p1: 1 }). А тут это немного ломается, кажется, не?

@vitkarpov
Copy link
Member

Ну да, я теперь понял о чем ты. Вопрос в том, создаются ли реально разные экземпляры моделей или нет? Я клоню к тому, что может если внутри мы пользуемся этим же АПИ и это не влияет на функциональность, то может и не надо (но сбивает с толку, это да)

@chestozo
Copy link
Member Author

Да, разный ключ - разные экземпляры (

@chestozo
Copy link
Member Author

Во, Саша нарыл #337

@chestozo
Copy link
Member Author

Похоже, сортировка нужна только, если есть paramsRewrite )
https://github.com/yandex-ui/noscript/blob/master/src/ns.model.js#L839-L842
В остальных местах - ключ строится по pNames - т.е. по одной и той же последовательности.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants