Ответ 1
Что касается отладки Ember, вы, вероятно, уже читали это: https://guides.emberjs.com/release/configuring-ember/debugging/
Есть пара замечательных функций, которые вы можете включить во время разработки, чтобы получить больше информации, что происходит под капотом.
Вы можете вставить в ваш app.js:
var App = Ember.Application.extend({
LOG_TRANSITIONS_INTERNAL: true,
LOG_ACTIVE_GENERATION: true,
LOG_VIEW_LOOKUPS: true,
LOG_RESOLVER: true,
});
Ember.run.backburner.DEBUG = true;
Ember.ENV.RAISE_ON_DEPRECATION = true;
Ember.LOG_STACKTRACE_ON_DEPRECATION = true;
Ember.LOG_BINDINGS = true;
Ember.RSVP.on('error', function(error) {
Ember.Logger.assert(false, error);
});
Вы можете остановить свой код, если вы напишете debugger
в своем коде. Я использую это довольно часто, чтобы выяснить, что там происходит.
С точки зрения вашего вопроса, если вы расширяете класс Ember, он в основном создает новую функцию, но ведет себя как подкласс расширенного класса. Вы можете проверить, что там происходит: https://github.com/emberjs/ember.js/blob/v1.7.0/packages/ember-runtime/lib/system/core_object.js#L536-L556
Когда вы запустите приложение Ember, ваше приложение будет упаковано в контейнер, поэтому, если вам нужен доступ к свойствам или переменным, вы должны использовать это - предположим, что ваше приложение называется "App":
App.__container__.lookup("controller:application").get("currentRouteName")
App.__container__.lookup("controller:application").get("currentPath")
App.__container__.lookup("controller:application").get("model")
Понадобится некоторое время, чтобы понять, как вы можете отладить свое приложение ember, но стоит изучить и потратить на него больше времени, потому что это будет довольно удобно позже.
Если у вас есть какие-либо вопросы, не стесняйтесь комментировать, и мы можем решить их.
О отладчике;
Это как точка останова, вы можете остановить код. "Осмотреть элемент"/"Инструмент разработчика" должны быть открыты в Chrome. Маленький пример здесь: http://jsbin.com/cugetoxoyira/45
Исходный код: http://jsbin.com/cugetoxoyira/45/edit В строке 18 есть debugger;
, так что вы можете проверить в своей консоли, что находится в контроллере или в параметрах модели. Вы должны ввести только controller
в вашей консоли в Developer Tool of Chrome.