如何使用AngularJS和Restangular返回/编辑REST资源

mia*_*are 3 mlab angularjs 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);
}
Run Code Online (Sandbox Code Playgroud)

mgo*_*nto 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.因此,如果承诺尚未解决,则它不会显示任何内容,一旦您从服务器获取数据,它就会显示在模板中.

如果你想要做的是编辑你得到的对象然后做一个put,那么你就无法使用promise,因为你需要更改值.

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

为此,您可以:

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

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

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

还可以看一下MongoLab的这个例子,也许它会帮助你:)

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