Эй, так что моя проблема, вероятно, проста, поскольку я новичок в ember и ember-cli, насколько я понимаю, вы просто редактируете шаблон приложения HBS, содержащий html, IE. приложение/шаблоны/settings.hbs

Однако моя проблема в том, что когда я редактирую один из этих файлов и перезапускаю весь стек, никакие изменения не отражаются - кроме того, я в основном просто пытаюсь внести некоторые незначительные изменения в уже созданный стек, введя условие if, чтобы найти имя контроллера и отображать контент, если он соответствует тому, что я ищу,

Например

{{#if controller.name == "settings"}}
// diff lis
{else}
// normal lis
{#endif}

Самое главное здесь, любые изменения, которые я вообще вношу в шаблон HBS, похоже, не отражаются вживую, есть идеи, почему?

1
Vince Kuro 11 Фев 2015 в 12:11

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

1
Marcio Junior 11 Фев 2015 в 20:01

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.
0
Kalman 11 Фев 2015 в 19:38