Page 224 - AngularJS权威教程
P. 224

204  第 18 章  服务器通信


             键,匹配到当前用户的email。
                 正如我们对属于用户的其他API做的那样,我们在UserService里面创建了一个方法,用于
             查询数据库:

                  // ...
                  itemsForSale: function() {
                      var d = $q.defer();
                      service.currentUser().then(function(user) {
                          AWSService.dynamo({
                              params: {TableName: service.UserItemsTable}
                          }).then(function(table) {
                              table.query({
                                  TableName: service.UserItemsTable,
                                 KeyConditions: {
                                     "User email": {
                                         "ComparisonOperator": "EQ",
                                         "AttributeValueList": [
                                            {S: user.email}
                                         ]
                                     }
                                 }
                             }, function(err, data) {
                                 var items = [];
                                 if (data) {
                                     angular.forEach(data.Items, function(item) {
                                         items.push(JSON.parse(item.data.S));
                                     });
                                     d.resolve(items);
                                 } else {
                                     d.reject(err);
                                 }
                             })
                         });
                     });
                     return d.promise;
                 },
                 // ...
                 在上面的查询中,KeyConditions和“User email”都是必选参数。


             18.21 在 HTML 显示列表


                 为了在HTML中显示用户的图像,我们只是把新的itemsForSale()方法的返回值赋给控制器
             作用域上的一个属性:
                 var getItemsForSale = function() {
                     UserService.itemsForSale()
                         .then(function(images) {
                             $scope.images = images;
                         });
                     }
                 // 初始加载用户列表
                 getItemsForSale();
                 现在我们可以轻松地使用ng-repeat指令迭代出列表中的项,如图18-17所示。
   219   220   221   222   223   224   225   226   227   228   229