При создании UI Kit в Backbone.js должен ли View создавать модель? - PullRequest
1 голос
/ 14 февраля 2012

Таким образом, я создаю повторно используемые компоненты пользовательского интерфейса, которые могут быть легко созданы позже, например:

this.emailInput = new TextInput() {
    label : 'Email Address',
    validators : [validatorFunc, secondValidatorFunc],
    placeholder : 'email@domain.com'
});

Имеет ли смысл для этого представления создавать свою собственную модель, которая будет хранить value при нажатии клавишии справиться с проверкой?Будет ли все еще иметь смысл, если бы не было никакой проверки?

А затем более сложный, с автозаполнением:

this.countryInput = new AutocompleteInput() {
    label : 'Country',
    placeholder : 'eg. United States',
    suggestions [ 
        { id : '1', value : 'USA', text : 'United States' },
        { id : 2, value : 'DE', text : 'Germany' },
        ... 
    ]
});

Имеет ли смысл хранить эти предложения в модели ихвладеть тем, что тоже создано View?Должен ли я также сохранить предложение selected в этой модели?

Кажется, что без использования модели я воспроизводил большую часть логики, которую модель дает вам автоматически.

I 'мы также думали о том, чтобы каждый suggestion был своим собственным представлением, создающим свою собственную модель, и знал suggestionListView о коллекции.Так работает Collection / ListViews?ListView знает коллекцию, а ItemView знает модель?

1 Ответ

1 голос
/ 14 февраля 2012

Часть validators вашего TextInput вида определенно больше подходит для модели.Модели в Backbone самопроверяются, так что вы их много покупаете.В вашем сценарии keydown модель будет иметь постоянное поле value, в котором хранится текущее значение input.Вам не нужно явно проверять новые значения в keydown, вы можете просто попытаться set модель:

Если модель имеет метод проверки, она будет проверенадо того, как атрибуты установлены, никаких изменений не произойдет, если проверка не пройдена, и set вернет false.- Backbone docs

Так что просто убедитесь, что вы правильно определили свой метод validate.

Будет ли это иметь смысл, если не будет проверки?

Это интересный вопрос, так как ваша модель / представление не очень типична.Я имею в виду, что создается впечатление, что вы создаете поля формы с целью создания полей формы. Если эти поля привязаны к фактическим моделям в вашем приложении (т. Е. К вещам, которые хранятся в вашем слое постоянства), то эти модели должны быть вашими опорными моделями. В противном случае я предполагаючто вы на самом деле хотите модель, которая означает "это поле ввода".Но я бы сказал нет, возможно, это не имело бы большого смысла, если бы вы не заботились о проверке - потому что в этом случае вы просто реагируете на пользовательские события и делаете все, что хотите, независимо от того, что представляют собой фактические данные.

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

В заключение: именно так работают коллекции, но, опять же, я не думаю, чтоэто бы сильно тебя купило.Однако, просто чтобы проиллюстрировать это, это будет выглядеть примерно так: suggestions будет набором Suggestion моделей;collectionView будет представлением, которое показывает models из suggestions, который каждый будет suggestionView, который представляет одно предложение.Опять же, это было бы полным излишним в этой ситуации ИМО.Единственная причина сделать это будет, если вы действительно заботитесь о каждом отдельном предложении, то есть, если вы хотите ответить на события на нем, или по какой-то причине сохранить его данные.Я не думаю, что вы, тем не менее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...