2013-02-16 47 views
1

這裏就是我的JSON數據是這樣的:試圖與Ember獲得JSON數據

[{"id":1,"iam":1,"youare":2,"lat":50.8275853,"lng":4.3809764,"msgbody":"Lorem ipsum lorem ipsum lorem ipsum"}] 

這裏是我的灰燼代碼:

window.Messages = Ember.Application.create(); 

Messages.Store = DS.Store.extend({ 
    revision: 11 
}); 

Messages.MessagesRoute = Ember.Route.extend({ 
    setupControllers: function(controller) { 
    controller.set('content', Messages.Message.find()); 
    } 
}); 

Messages.Message = DS.Model.extend({ 
    msgbody: DS.attr('string') 
}); 

Messages.MessagesController = Ember.ArrayController.extend({ 
    content: [] 
}); 

的事情是我的JSON數據住在/app_dev.php/消息沒有在/消息/ ...

我只是試圖做的只是一個成功的GET請求,但我不能管理......你能告訴我在做什麼錯了,所以我可以得到灰燼的一些把握句法?

編輯感謝您的回答。只是告知,經過許多努力,使一些微不足道的東西,我嘗試了Angular,它似乎更好,更快,更容易地完成這項工作。所以我正在切換框架。

回答

2

你會想在適配器上使用命名空間選項。這可以按照以下方式指定,然後在創建商店時使用MyApp適配器。

MyApp.Adapter = DS.RESTAdapter.extend({ 
    namespace: 'app_dev.php' 
}); 
+0

謝謝,我做了這個改變,沒有控制檯錯誤..但是:沒有json ajax請求:(我想我的路由器沒有正確設置..? – 2013-02-16 07:52:05

1
  1. 我覺得這是更好地通過url選項來指定文件名:

    App.Store = DS.Store.extend({ 修訂:11, 適配器:DS .RESTAdapter.create({url:「/app_dev.php」 }) });

  2. 您的JSON的結構應如下:

{ 
    messages: [ 
     {"id":1,"iam":1,"youare":2,"lat":50.8275853,"lng":4.3809764,"msgbody":"ipsum "}, 
     {"id":2,"iam":1,"youare":2,"lat":50.8275853,"lng":4.3809764,"msgbody":"Lorem "} 
    ] 
} 

進一步參考見ember guide

+0

謝謝西蒙。問題是我不能真正的會干擾我的Json是如何生成的,我不知道如何用Mysql .../pho實現這個輸出。 – 2013-02-16 21:59:52

0

Ember要求您使用他們所稱的「類型鍵」來成功讀取JSON,換句話說,您需要在對象本身之前放置模型的名稱,以便Ember識別該類型。

在我的例子中,我創建了一個Java/Spring後端,並且不想將它添加到我的對象中,爲了解決這個問題,您可以創建一個Serializer文件,Ember Serializers的文檔,特別是RESTSerializer可以發現here

將typeKey添加到傳入JSON覆蓋normalizePayload掛鉤。下面是我如何做一個例子:

​​

如果你還沒有把你的typeKey的對JSON的出路,你可能會遇到類似的問題,當你把或POST數據,所以你會可能需要重載serializeIntoHash掛鉤以移除傳出數據上的typeKey。這裏是一個例子,什麼對我有用:

serializeIntoHash: function(hash, type, record, options){ 
    Ember.merge(hash, this.serialize(record, options)); 
} 

希望幫助!我看你切換到角(偉大的決定,我更喜歡灰燼角100倍,但我的工作需要我用灰燼目前,所以我通過它的戰鬥。)但希望這可以幫助別人誰是遇到類似問題,或者希望或被迫使用Ember。