2013-06-22 48 views
3

對於AngularJS使用Restangular,不斷從Mongolab獲取對象對象。如何使用AngularJS和Restangular返回/編輯REST資源

我確定它與Promise有關,但不確定如何使用/實現來自舊的Java OO經驗。

(附註,會像雄辯的Javascript,一些書或資源幫助我理解的「新」的Javascript風格?)

小的web應用程序是爲殘疾學生,並輸入/編輯的同學,更新他們放學後的時間,然後每週爲他們的父母/護理人員輸出報告。

這裏的彈出當一個新的形式(AngularJS自舉UI模式下),返回未定義的代碼

我個人認爲Restangular &的文檔是一個很好的補充所以希望這不會阻止其他人 - 這就是我不夠了解。

在此先感謝

app.js ...

$scope.editStudent = function(id) { 
    $scope.myStudent = Restangular.one("students", id); 
    console.log($scope.myStudent); 
} 
+0

我可能會使用ngResource超過restangular。另外,是的 - 有一些很好的JS書籍,像Eloquent JavaScript會幫助你開始。 AngularJS也有很好的書籍。祝你好運! –

+0

請求是否正確建立,即,正確的URL?嘗試在瀏覽器中使用螢火蟲或其他JavaScript控制檯並檢查流量。至於ngResource與Restangular,Restangular確實有它的merrits:https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource(承諾部分是不是真的了) – Maarten

+0

感謝您的輸入到目前爲止Benjamin&Maarten。 Maarten:是的,它打的URL,至少對我的getList來獲得殘疾學生名單。 這是一個偉大的圖書館和奇妙的文檔,它只是我太密集哈哈。 – miamisoftware

回答

15

我Restangular的創作者:)。也許我可以幫你一點。

所以,你需要做的第一件事就是配置baseUrl for Restangular。對於MongoLab,你通常有一個基本的URL,它們都是類似的。

一旦你得到了工作,你需要檢查響應的格式:

如果您迴應被包在另一個對象或信封,你需要在你responseExtractor爲「解包」吧。爲此,請檢查https://github.com/mgonto/restangular#my-response-is-actually-wrapped-with-some-metadata-how-do-i-get-the-data-in-that-case

一旦您確定了,就可以開始執行請求。

所有Restangular請求都會返回一個Promise。 Angular的模板能夠處理Promises,並且能夠在HTML中顯示承諾結果。所以,如果承諾還沒有解決,它就什麼都不顯示,一旦你從服務器獲取數據,它就會顯示在模板中。

如果你想要做的是編輯你得到的對象,然後做一個放置,在這種情況下,你不能使用承諾,因爲你需要改變值。

如果是這種情況,您需要將承諾的結果分配給$ scope變量。

對於這一點,你可以這樣做:

Restangular.one("students", id).get().then(function(serverStudent) { 
    $scope.myStudent = serverStudent; 
}); 

這樣,一旦服務器返回的學生,你會指派這範圍變量。

希望這會有所幫助!否則在這裏評論我!

還檢查了與MongoLab這個例子也許會幫助你:)

http://plnkr.co/edit/d6yDka?p=preview

+0

hey creary的restangular! :)你可以看看我的非常相關的問題[put問題](http://stackoverflow.com/questions/30841411/put-object-in-restangular)? – Asqan