2016-05-10 3 views
0

Emberアプリ「ember-cli」をビルドしています:「2.4.3」、Laravel/Lumenに座って、ワイヤを正しく接続しているようです。 APIサーバーJSON-APIにも準拠しようとしているので、問題がある場合は構文を変更するアクセス権があります。私はルートの中から、代わりにデータのための店を呼び出すgetJSON(...)を呼び出す場合Ember、JSONAPIAdapter、JSONAPISerializer、findAll not available

私は輸出のデフォルトDS.JSONAPISERIALIZERを削除した場合、私はそれでember.debug.js:32116 TypeError: typeClass.eachTransformedAttribute is not a function

を取得し、私は一般的に、Assertion Failed: You tried to load all records but your adapter does not implement findAll

を取得しますそれは完全に動作し、期待どおりにビューに表示されます。

私は他のアダプターを試しましたが、私はJSONAPIADAPTERを使用する必要があると思っています。どんな助けも素晴らしいだろう。

application.js

import DS from "ember-data"; 

export default DS.JSONAPIAdapter.extend({ 
namespace: 'v1', 
host: 'http://edu-api.app:8000', 
}); 

export default DS.JSONAPISerializer.extend({ 
//in preparation of underscores in returned data 
// keyForAttribute: function(attr) { 
//  return Ember.String.underscore(attr); 
// }, 
// keyForRelationship: function(attr) { 
//  return Ember.String.underscore(attr); 
// } 
}); 

skill.js私はあなたが主ember-cliを理解する問題があると思う

import DS from 'ember-data'; 
var App = window.App = Ember.Application.extend(); 
var attr = DS.attr; 

App.Skill = DS.Model.extend({ 
    name: attr("string"), 
    desc: attr("string") 
}); 

index.js

export default Ember.Route.extend({ 
    model() { 
    //return this.store.findAll('skill'); //<- Assertion Failed: You tried to load all records but your adapter does not implement `findAll` 
    this.get('store').findAll('skill'); //<- Assertion Failed: You tried to load all records but your adapter does not implement `findAll` 
    //return Ember.$.getJSON('http://edu-api.app:8000/v1/skills'); //<- works, and properly displays data to view 
    } 
}); 

答えて

0

まず、アダプタとシリアライザを同じファイルに入れないでください。たぶんember generate serializer applicationのようなデフォルトのファイルを取得するためにジェネレータを使用してください。

アプリケーションシリアライザはapp/serializers/application.jsに、アダプタはapp/adapters/application.jsになります。

次は、この行は本当に間違っになります

var App = window.App = Ember.Application.extend(); 

これは新しいアプリを作成しますが、あなたはあなたのapp/app.jsに一度だけこの操作を行う必要があります。次に、グローバルエクスポートを使用すると、は決してとなり、ember-cliアプリになります。

モデルを指定するには、ファイルをmodels/skill.jsに配置する必要があります。新しいモデルをAppのようにグローバルにエクスポートすると、App.Skill = DS.Model.extend({のようになりますが、export default DS.Model.extend({のようにデフォルトのエクスポートとしてエクスポートします。

index.jsは、routes/の下にある場合は右に見えます。

この魔法をすべて実行するemberリゾルバとember依存性注入フレームワークの詳細を読むことを強くお勧めします。また、ジェネレータを使用してファイルを取得すると、ファイルを正しく配置するのに役立ちます。

+0

sluxよりも、あなたの口実を厳密に守っています。私は実際にシリアライザとアダプタを正しいフォルダに持っています。私が言及しておかなければならないことは、私が発電機を使ってバニラアプリを作り、これをルーメンフレームワークに移したということです。 – Rockman

+0

まあ、 'ember-cli'ビルドステップと開発サーバーを使いたいですか?バックエンドとフロントエンドを分割することをお勧めしますので、Laravel/Lumenはまったく問題ありません。制作のためだけに、一緒に構築します。 – Lux

+1

"私が言及しておきたいことは、発電機を使ってバニラアプリを作り、これをルーメンフレームワークに移したということです。 Lumenに展開する前にアプリを構築する必要があります。 – locks

関連する問題