Действия Ember не запускаются после перехода на ember-cli

Я начал переносить свое приложение со всего, что есть в тегах скриптов и с одного файла .js, на ember-cli. Мои маршруты, модели и рендеринг работают, но по какой-то причине действия контроллера не запускаются. Никто. В любом месте. Это приложение работает нормально, пока я не перенесу все в их собственные файлы, чтобы они соответствовали структуре каталога / модуля ember-cli. Есть идеи, что могло быть причиной этого?

Все визуализированные элементы DOM имеют на них «data-ember-action», как и ожидалось, но щелчок по ним ничего не делает, как и явный вызов click() с использованием jQuery на консоли. На консоли нет никаких выходных данных, как это обычно бывает, когда возникает ошибка «действие не найдено», и ни один из моих кодов не выполняется.


person Matt Baker    schedule 21.06.2014    source источник


Ответы (2)


Скорее всего, он не использует ваши контроллеры, он, вероятно, создает пустышку. Ваша схема именования, вероятно, не соответствует ожиданиям 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, где показано, какой тип контроллера используется.

person Kingpin2k    schedule 21.06.2014
comment
нет, я уже сделал этот тест. Он подключен к нужному контроллеру, просто никакие действия на него не отправляются. - person Matt Baker; 21.06.2014
comment
Облом, мы всегда можем надеяться на простой ответ, не могли бы вы опубликовать код соответствующих областей? - person Kingpin2k; 21.06.2014
comment
это простой ответ; глупость и немая удача. Отправляю свой ответ сейчас, чтобы мне было вечно стыдно на StackOverflow. - person Matt Baker; 21.06.2014

Это была просто огромная глупость и удача. В моем исходном приложении я инициализировал приложение 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 действительно завладел, сломав все.

person Matt Baker    schedule 21.06.2014
comment
хахаха, хорошая находка, мне нравится, когда я нахожу остатки старого кода, когда я изучал материал. - person Kingpin2k; 22.06.2014