对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);
}
答案 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查看这个例子也许它会帮助你:)