如何在ionic中使用$http获取特定的用户内容
how to get particular user content using $http in ionic
我是离子的新手。我已经用rest调用成功地填充了用户列表。我想使用$http方法为用户获取特定的数据。但我做不到。这是我的代码。
services.js
angular.module('starter.service',[]).
factory('Contents',['$http',function($http){
var users = [];
return {
get: function(){
return $http.get("http://jsonplaceholder.typicode.com/users").then(function(response){
users = response;
return users;
});
},
remove:function(content){
users.splice(users.indexOf(content),1);
},
getUser:function(chatId)
{
console.log('inside service');
for(var i=0; i<users.length;i++){
if(users[i].id === parseInt(chatId)){
return users[i];
}
}
return null;
}
}
}]);
控制器.js
angular.module('starter.controller', [])
.controller('ChatCtrl', function($scope, Contents,$ionicModal) {
console.log('inside controller');
Contents.get().then(function(users){
//users is an array of user objects
$scope.contents=users.data;
console.log($scope.contents);
});
$scope.remove = function(content) {
Contents.remove(content);
};
})
.controller('ChatDetailCtrl', function($scope, $stateParams, Contents) {
console.log('details');
$scope.content = Contents.getUser($stateParams.chatId);
console.log($stateParams.chatId);
console.log($scope.content)
});
chat.html:
<ion-view view-title="Chats">
<ion-content>
<ion-list>
<ion-item class="item-remove-animate item-avatar item-icon-right" ng-repeat="content in contents" type="item-text-wrap" >
<img ng-src="{{content.image}}" style="width:50px; height:50px;" ng-click="showUser(content)">
<a href="#/tab/chats/{{content.id}}" class="subdued">
<h2>{{content.name}}</h2>
<i class="icon ion-chevron-right icon-accessory"></i>
<ion-option-button class="button-assertive" ng-click="remove(content)">
Delete
</ion-option-button>
</a>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
此chat.html重定向到另一个名为chat-detail.html的模板,该模板显示用户数据。
我认为问题在于无法删除用户。之所以会发生这种情况,是因为您不是从users数组(在response.data中)中删除,而是从响应本身(出于某种原因,您将其存储在用户变量中)中移除。
以下是应该对您有所帮助的东西:
这是你的服务
angular.module('starter.service', [])
.factory('Contents', ['$http', function($http) {
var users = [];
return {
get: function(){
return $http.get("http://jsonplaceholder.typicode.com/users")
.then(function(response) {
users = response.data;
return users;
});
},
...
}]);
这个在你的控制器中
angular.module('starter.controller', [])
.controller('ChatCtrl', function($scope, Contents, $ionicModal) {
console.log('inside controller');
Contents.get().then(function(users){
//users is an array of user objects
$scope.contents = users;
console.log($scope.contents);
});
$scope.remove = function(content) {
Contents.remove(content);
};
})
.controller('ChatDetailCtrl', function($scope, $stateParams, Contents) {
console.log('details');
$scope.content = Contents.getUser($stateParams.chatId);
console.log($stateParams.chatId);
console.log($scope.content)
});
此外,我没有重命名任何东西,所以你会理解我修改了什么,但这里有一些你可能想做的修改:
- 将内容重命名为类似"userService"的内容
- 到处使用camelCase(控制器名称除外)
- 要更多地关注变量名(或$scope属性),因为实际上包含用户的内容并不是很好
希望这有帮助,如果没有,请告诉我。
相关文章:
- 从远程脚本获取用户IP
- JSON获取用户id's在嵌套数组中
- 获取用户选择的不带时区的日期
- 如何从客户端的数组中获取用户输入和返回值
- 如何使用Node.js脚本从Rally获取用户的修订历史
- Express.js:在用户发帖时获取用户的引荐来源网址
- 获取用户位置并将坐标保存在数据库中
- 获取用户按键的时间
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- 如何获取用户's输入并返回我定义的匹配变量的值
- 如何通过获取用户输入和使用按钮来运行JavaScript函数
- 使用jQuery获取用户坐标
- 获取用户和服务器时间之间的时间差
- 在 PHP 或 JavaScript 中获取用户的纬度和经度,以便在 PHP 中使用
- 如何通过声云 api 调用获取用户 ID
- 使用 Javascript 获取用户的 Github 存储库列表
- 如何使用 HTML 中的表单框获取用户输入
- 如何从HTML表单中获取用户输入并将其存储在现有的JavaScript数组中
- Phonegap通过WiFi和移动网络而非GPS获取用户位置
- 获取用户选择的选项的值