#ember.js #ember-cli
#ember.js #ember-cli
Вопрос:
Я начал переносить свое приложение из всех тегов скрипта и одного файла .js в ember-cli. Все мои маршруты, модели и рендеринг работают, но по какой-то причине никакие действия контроллера не запускаются. Нет. Где угодно. Это приложение работает нормально, пока я не перенесу все в свои собственные файлы, чтобы соответствовать структуре каталогов / модулей ember-cli. Есть идеи, что может быть причиной этого?
Все отображаемые элементы DOM имеют ‘data-ember-action’ для них, как и ожидалось, но нажатие на них ничего не делает, как и явный click()
вызов с использованием jQuery на консоли. На консоли нет никаких выходных данных, как это обычно бывает, когда возникают ошибки «действие не найдено», и ни один из моих кодов не попадает.
Ответ №1:
Вероятно, он не использует ваши контроллеры, вероятно, он создает фиктивный. Вероятно, ваша схема именования не соответствует ожидаемой ember-cli.
Вы могли бы доказать это довольно быстро, добавив свойство в свой контроллер
var IndexController = Ember.ObjectController.extend({
foo: 'bar'
});
export default IndexRoute;
а затем ссылаются на свойство в вашем шаблоне
I'm using the controller and it's property is {{foo}}
Вы также можете увидеть это в расширении ember Chrome, где показано, какой тип контроллера используется.
Комментарии:
1. нет, я уже провел этот тест. Он подключен к нужному контроллеру, просто на него никогда не отправляются действия.
2. Облом, мы всегда можем надеяться на простой ответ, не могли бы вы опубликовать некоторый код соответствующих областей?
3. это простой ответ; глупость и глупая удача. Публикую свой ответ сейчас, чтобы я мог навсегда пристыдить StackOverflow.
Ответ №2:
Это была просто огромная глупость и удача. В моем оригинальном приложении я инициализировал приложение Ember следующим образом:
Ember.Application.extend({
customEvents: {
tap: "click",
click: null //Prevent tap from registering as two clicks
}
});
Очевидно, что это абсолютно ничего не дало, поскольку я никогда не сохраняю и не использую результат этого вызова. В приложении ember-cli:
var App = Ember.Application.extend({
modulePrefix: 'my-app', // TODO: loaded via config
Resolver: Resolver,
customEvents: {
tap: "click",
click: null //Prevent tap from registering as two clicks
}
});
На этот раз customEvents
на самом деле завладели, сломав все.
Комментарии:
1. хахаха, хорошая находка, мне нравится, когда я нахожу остатки старого кода, когда я изучал материал.