ExtJS 4 Проблема с концепцией MVC - PullRequest
1 голос
/ 06 июня 2011

Я пытаюсь использовать новую концепцию MVC и поэтому начал с примера AccountManager (examples / simple). Все отлично работает, пока я придерживаюсь учебника, но я попытался немного его расширить.

Я определяю макет границы в Viewport.js и назначаю компонент заголовка (views / Header.js) на север и панель вкладок (views / MainPanel.js), которая содержит «views / user / List.js» в качестве вкладки.

До сих пор все в порядке.

Но теперь я добавил еще один магазин (Profiles.js) и модель (Profile.js), изменил ссылки в коде, чтобы использовать хранилище профиля вместо хранилища пользователя. Я также обновил определение столбца, импортирует («требует») и все, что имеет отношение (по крайней мере, я так думаю ...).

Когда я запускаю свое приложение, я получаю js-ошибку в Observable.js -> addManagedListener-> 'item is undefined', когда он пытается вызвать метод on 'item'.

Сначала я изо всех сил пытался найти ошибку, которую я сделал в коде, но я ничего не мог найти, так что я немного поигрался и узнал, что он работает, как только я переименую папку «user» в views / в «profile» (конечно, мне пришлось исправить и некоторые ссылки в коде).

Является ли это поведение ошибкой или оно носит волевой характер? Если да, может кто-нибудь сказать, как это работает?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

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

Но, кажется, обязательно предоставить эту информацию, насколько я понимаю, избыточно, и я могу жить с этим ...

0 голосов
/ 06 июня 2011

ExtJS ищет файлы Javascript на основе объявлений вашей модели / вида / контроллера.

т.е. если в вашем скажите вашему контроллеру, что у вас есть хранилище с именем Profile (через атрибут stores) по умолчанию, оно будет искать файл в app_name/stores/Profile.js

...