3

Using Restangular for AngularJS, keep getting an object object from Mongolab.

I'm sure it has to do with Promise but not sure how to use/implement this coming from old Java OO experience.

(Side note, would something like Eloquent Javascript, some book or resource help me understand the 'new' Javascript style?)

The small web app is for Disabled Students and is to input/edit the students, update the time they spend after school and then output reports for their parents/caregivers every week.

Here's the code that returns undefined when popping up a new form (AngularJS Boostrap UI modal)

I personally think Restangular & the documentation is a great addition so hope it doesn't dissuade others - this is just me not knowing enough.

Thanks in advance

app.js ...

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

1 回答 1

15

我是 Restangular 的创造者 :)。也许我可以帮助你一点。

因此,您需要做的第一件事是为 Restangular 配置 baseUrl。对于 MongoLab,您通常有一个与所有这些类似的基本 url。

一旦你开始工作,你需要检查响应的格式:

如果您的响应包含在另一个对象或信封中,您需要在您的 responseExtractor 中“解包”它。为此,请查看https://github.com/mgonto/restangular#my-response-is-actually-wrapped-with-some-metadata-how-do-i-get-the-data-in-that-c​​ase

一旦你确定了,你就可以开始做请求了。

所有 Restangular 请求都返回一个 Promise。Angular 的模板能够处理 Promises,并且能够在 HTML 中显示 Promise 结果。因此,如果 promise 尚未解决,它不会显示任何内容,并且一旦您从服务器获取数据,它就会显示在模板中。

如果您要做的是编辑您获得的对象然后执行 put,在这种情况下,您无法使用 Promise,因为您需要更改值。

如果是这种情况,您需要将承诺的结果分配给 $scope 变量。

为此,您可以这样做:

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

这样,一旦服务器返回学生,您将其分配给范围变量。

希望这可以帮助!否则在这里评论我!

还可以使用 MongoLab 查看此示例,也许它会对您有所帮助:)

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

于 2013-06-24T22:58:22.700 回答