2

現在、Ember.js ガイドのすべてのページとコードのスニピットに目を通し、小さなサンプル アプリを作成しています。少しの間行き詰まったが解決したものもあります。しかし、これは私を混乱させます。

http://emberjs.com/guides/controllers/representing-multiple-models-with-arraycontroller/にもありますが、.get('songs")は 使用しませんhttp://emberjs.com/guides/controllers/ objectcontroller を使用した単一モデルの表現/

App.SongsRoute = Ember.Route.extend({
  setupController: function(controller, playlist) {
    controller.set('model', playlist.get('songs'));
  }
});

playlist.get('songs') が何を参照しているのかわかりません。モデルオブジェクト配列の内部オブジェクトだと思いますが、明らかに間違っています。しかし、彼らのサイトのサンプル コードには動作するモック スタブ データがないため、すべてのテストから推測しているだけです。

ここで提供されるコードには、私が何をテストしているかを確認するためにコメントアウトされたビットが含まれています。

<script type="text/x-handlebars" data-template-name="songs">
    <h1>Playlist</h1>
    <ul>
      {{#each}}
        <li>{{name}} by {{artist}}</li>
      {{/each}}
    </ul>
</script>

<script type="text/x-handlebars" data-template-name="playlist">
    <h3>Playlist: </h3>
</script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/ember.js/1.0.0-rc.6/ember.min.js"></script>


<script type="text/javascript">
window.App = Ember.Application.create();

App.Router.map(function () {
  this.resource('songs');
  this.resource('playlist');
});

App.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('songs');
  }
});

// App.SongsRoute = Ember.Route.extend({
//   setupController: function(controller, model) {
//     controller.set('model', model);
//   },
//   model: function () {
//     // return songs;
//     return playlist.songs;
//   }
// });

App.SongsRoute = Ember.Route.extend({

  playlist: function() {
    var playlist = { songs: [{fish: "fish"}, {fish: "fish"}] };
    return playlist;
  }.property(),

  setupController: function(controller, playlist) {
    controller.set('model', playlist.get('songs'));
  }
});

App.PlaylistRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    controller.set('model', model);
  },
  model: function () {
    return playlist;
  }
});

App.SongsController = Ember.ArrayController.extend();

var songs = {
  duration: 777,
  name: 'Ember',
  artist: 'Jimmy Smith',
};

var playlist = {
  songs: [
    {
      id: 1,
      duration: 777,
      name: 'Ember',
      artist: 'Jimmy Smith',
    },
    {
      id: 2,
      duration: 888,
      name: 'jQuery',
      artist: 'Hyper Cat',
    }
  ]
};
</script>
4

1 に答える 1