web-dev-qa-db-ja.com

{{content-for 'head'}} Ember-cli

過去1か月間、Yeoman emberジェネレーターを使用してきましたが、ember-cliを試してみたいと思います。

ジェネレーターを実行してアプリを起動すると、すべてが正常に機能します。

ember new my-new-app
ember server

しかし、私はどのように知りたい

{{content-for 'head'}}

app/index.htmlで動作しますか?

http://www.ember-cli.com/#tutorials の他の例を見ると、この特定のヘルパーを使用しているものはありませんか?古いバージョンのember-cliを使用しているためですか?なぜ彼らはこのコンテンツ用ヘルパーを使用しなかったのですか?

Ember.jsにはデフォルトではこのコンテンツヘルパーが含まれていないので、ember-cliがどこかに書き込んだと思いますか?それはどこにあり、何のためですか?

また、my-new-appページの要素を調べると、headタグではなくbodyタグに「Welcome to Ember.js」のdivタグが表示されましたか?そんなことがあるものか? {{mind-blown}}

(app/index.htmlでは、{{content-for 'head'}}はheadタグ内に配置されます)

32
Sukhito

このディスカッション に基づいてember-cliに最近追加されました。

commit からの関連コードは次のとおりです。

EmberApp.prototype.contentFor = function(config, match, type) {
  var content = [];

  if (type === 'head') {
    content.Push(calculateBaseTag(config));

    content.Push('<meta name="' + config.modulePrefix + '/config/environment" ' +
                 'content="' + escape(JSON.stringify(config)) + '">');
  }

  content = this.project.addons.reduce(function(content, addon) {
    if (addon.contentFor) {
      return content.concat(addon.contentFor(type, config));
    }

    return content;
  }, content);

  return content.join('\n');
};
25
Peter Brown

Ember CLIガイド から:

app/index.html

app/index.htmlファイルは、アプリケーションの基盤となります。ここで、基本的なDOM構造がレイアウトされ、title属性が設定され、stylesheet/javascriptインクルードが行われます。それに加えて、 app/index.htmlには複数のフックが含まれます-{{content-for 'head'}}および{{content-for 'body'}}-アドオンがアプリケーションのheadまたはbodyにコンテンツを注入するために使用できます。これらのフックは、アプリケーションが適切に機能するためにそのままにしておく必要がありますが、特定のアドオンを直接操作しない限り、無視しても問題ありません。

私は実際に_Welcome to Ember.jsは(明らかにapp\templates\application.hbs)、しかし最初につまずいたのはcontent-forヘルパー。

21
mp31415