Эй, так что моя проблема, вероятно, проста, поскольку я новичок в ember и ember-cli, насколько я понимаю, вы просто редактируете шаблон приложения HBS, содержащий html, IE. приложение/шаблоны/settings.hbs
Однако моя проблема в том, что когда я редактирую один из этих файлов и перезапускаю весь стек, никакие изменения не отражаются - кроме того, я в основном просто пытаюсь внести некоторые незначительные изменения в уже созданный стек, введя условие if, чтобы найти имя контроллера и отображать контент, если он соответствует тому, что я ищу,
Например
{{#if controller.name == "settings"}}
// diff lis
{else}
// normal lis
{#endif}
Самое главное здесь, любые изменения, которые я вообще вношу в шаблон HBS, похоже, не отражаются вживую, есть идеи, почему?
2 ответа
В дополнение к ответу @Oren, если вы используете ember 1.10, вы можете воспользоваться подвыражениями handlebars и написать свой собственный помощник eq
, который можно использовать в других ситуациях. Например:
Ember.Handlebars.registerBoundHelper('eq', function(left, right) {
return left === right;
});
А затем в вашем шаблоне
{{#if (eq name "settings") }}
// diff lis
{{else}}
// normal lis
{{/if}}
// ...
{{#if (eq something otherstuff) }}
// show this
{{else}}
// show that
{{/if}}
Живой образец http://emberjs.jsbin.com/mezoxiqavi/1/edit
Handlebars не имеет помощника по равенству в той форме, которую вы опубликовали. (См. в этом списке список всех встроенных помощников.)
Вместо этого, чтобы заставить ваш код работать, вам нужно создать свойство на вашем контроллере:
IsNameSettings: function(){
return this.get('model.name') === 'settings';
}.property('model.name');
И измените свой шаблон, чтобы использовать это свойство (обратите внимание, что у вас также есть {{/endif}}
, который необходимо изменить на {{/if}}
[см. ссылку выше]):
{{#if controller.IsNameSettings}}
// diff lis
{else}
// normal lis
{/if}
Посмотрите, будет ли после изменения вашего шаблона руля допустимый синтаксис, как я описал, привести к обновлению страницы в реальном времени, когда вы ожидаете перезагрузки в реальном времени. Убедитесь, что после сохранения этих изменений вы видите выходные данные ember-cli
, указывающие на успешную сборку. Проверьте вывод в терминале по строкам:
version: 0.1.12
Livereload server on port 35729
Serving on http://0.0.0.0:4200/
Build successful - 8891ms.
Похожие вопросы
Новые вопросы
node.js
Node.js — это основанная на событиях, неблокирующая, асинхронная среда выполнения ввода-вывода, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на стороне клиента, так и на стороне сервера и, следовательно, выигрывают от возможности повторного использования кода и отсутствия переключения контекста.