1

** Ember Data の代わりに Ember.Object を使用して API からデータを取得していますが、それが問題の原因である可能性があると考えています。**

私は自分のリソースを次のようにネストしています:

Mdm.Router.map ->
 @resource "groups", ->
   @resource "group", path: ':group_id'

「/groups/」は、ブラウザーの左側にすべてのグループのリストをロードします。各グループは、特定の group_id にリンクしています。クリックすると、「グループ」テンプレートが画面の右側にレンダリングされ、1 つのグループの詳細が表示され、リストは左側に残ります。

ただし、戻るボタンをクリックするか、手動で group_id を URL に入力すると、個々のグループはレンダリングされません。URL はブラウザー ウィンドウで更新されますが、コンテンツはそれに合わせて変更されません。

{{outlet}} を使用して、「グループ」テンプレート内に単一の「グループ」テンプレートをレンダリングしています。

私の groups_route.js.coffee は次のようになります。

Mdm.GroupsRoute = Ember.Route.extend(model: ->
   Mdm.Group.all()
)

アプリケーション.hbs:

<div class="container">
  <div class="nav-bar">
    <img src="assets/logo_loginbox.png" class="logo">
    <ul class="nav-menu">
      <li>GROUPS</li>
      <li>USERS</li>
    </ul>
  </div><!-- nav-bar -->
  <hr>
  {{outlet}}
</div><!-- container -->

groups.hbs:

<h1>Groups</h1>

{{ partial groupsList }}
<div class="group">
  {{outlet}}
</div><!-- group -->

group.hbs:

<h1>{{name}}</h1>

[戻る] ボタンを使用するか、group_id が存在するページを読み込もうとすると、コンソールに次のエラーが表示されます。

Uncaught TypeError: Object function () {
if (!wasApplied) {
  Class.proto(); // prepare prototype...
}
o_defineProperty(this, GUID_KEY, undefinedDescriptor);
o_defineProperty(this, '_super', undefinedDescriptor);
var m = meta(this);
m.proto = this;
if (initMixins) {
  // capture locally so we can clear the closed over variable
  var mixins = initMixins;
  initMixins = null;
  this.reopen.apply(this, mixins);
}
if (initProperties) {
  // capture locally so we can clear the closed over variable
  var props = initProperties;
  initProperties = null;

  var concatenatedProperties = this.concatenatedProperties;

  for (var i = 0, l = props.length; i < l; i++) {
    var properties = props[i];

    Ember.assert("Ember.Object.create no longer supports mixing in other definitions, use createWithMixins instead.", !(properties instanceof Ember.Mixin));

    for (var keyName in properties) {
      if (!properties.hasOwnProperty(keyName)) { continue; }

      var value = properties[keyName],
          IS_BINDING = Ember.IS_BINDING;

      if (IS_BINDING.test(keyName)) {
        var bindings = m.bindings;
        if (!bindings) {
          bindings = m.bindings = {};
        } else if (!m.hasOwnProperty('bindings')) {
          bindings = m.bindings = o_create(m.bindings);
        }
        bindings[keyName] = value;
      }

      var desc = m.descs[keyName];

      Ember.assert("Ember.Object.create no longer supports defining computed properties.", !(value instanceof Ember.ComputedProperty));
      Ember.assert("Ember.Object.create no longer supports defining methods that call _super.", !(typeof value === 'function' && value.toString().indexOf('._super') !== -1));

      if (concatenatedProperties && indexOf(concatenatedProperties, keyName) >= 0) {
        var baseValue = this[keyName];

        if (baseValue) {
          if ('function' === typeof baseValue.concat) {
            value = baseValue.concat(value);
          } else {
            value = Ember.makeArray(baseValue).concat(value);
          }
        } else {
          value = Ember.makeArray(value);
        }
      }

      if (desc) {
        desc.set(this, keyName, value);
      } else {
        if (typeof this.setUnknownProperty === 'function' && !(keyName in this)) {
          this.setUnknownProperty(keyName, value);
        } else if (MANDATORY_SETTER) {
          Ember.defineProperty(this, keyName, null, value); // setup mandatory setter
        } else {
          this[keyName] = value;
        }
      }
    }
  }
}
finishPartial(this, m);
delete m.proto;
finishChains(this);
this.init.apply(this, arguments);
  } has no method 'find' application.js:51233
Mdm.GroupRoute.Ember.Route.extend.model application.js:51233
superWrapper application.js:12849
Ember.Route.Ember.Object.extend.deserialize application.js:36503
collectObjects application.js:35614
proceed application.js:35638
(anonymous function) application.js:1193
fire application.js:1038
self.fireWith application.js:1149
(anonymous function) application.js:1200
fire application.js:1038
self.fireWith application.js:1149
done application.js:8075
script.onload.script.onreadystatechange
4

0 に答える 0