如何使用AngularJS&amp ;;返回/编辑REST资源Restangular

时间:2013-06-22 18:44:23

标签: angularjs mlab restangular

对AngularJS使用Restangular,继续从Mongolab获取对象对象。

我确信它与Promise有关,但不确定如何使用/实现旧的Java OO体验。

(旁注,就像Eloquent Javascript,一些书籍或资源有助于我理解'新'Javascript风格?)

小型网络应用程序适用于残疾学生,可输入/编辑学生,更新他们放学后的时间,然后每周为其父母/看护人输出报告。

这是在弹出新表单时返回undefined的代码(AngularJS Boostrap UI模式)

我个人认为Restangular&文件是一个很好的补充,所以希望它不会劝阻别人 - 这只是我不够了解。

提前致谢

app.js ...

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

1 个答案:

答案 0 :(得分:15)

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

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

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

如果您的回复包含在另一个对象或信封中,则需要在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中显示promise。因此,如果承诺尚未解决,则它不会显示任何内容,一旦您从服务器获取数据,它就会显示在模板中。

如果您想要做的是编辑您获得的对象然后执行put,那么您就无法使用promise,因为您需要更改值。

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

为此,你可以这样做:

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

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

希望这有帮助!否则请在这里评论我!

另外用MongoLab查看这个例子也许它会帮助你:)

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