Регистрация консоли на ember js

Я просто хотел бы спросить, почему, когда вы печатаете на консоли на ember, это дает вам строку? но если вы нажимаете на него, это дает вам функцию?

ex. sample = Ember.Route.extend();
console.log(sample); // prints (subclass of Ember.Route)
console.log(typeof sample); // function

Может кто-нибудь объяснить это, пожалуйста? Помимо их документации, которую трудно понять. Это действительно тяжело отлаживать на ember, даже с инжектором ember. Есть ли какой-либо инструмент или способ правильно отладить ember.

2 ответа

В терминах отладки Ember вы, вероятно, уже читали это: http://emberjs.com/guides/understanding-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.__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 в Консоль в Инструменте разработчика Chrome.


Просто используйте {{log "This is logged" foo "And so is this"}}

Ссылка: http://handlebarsjs.com/builtin_helpers.html

licensed under cc by-sa 3.0 with attribution.