Javascript 单击用户时,是否未获得相同的结果-安格拉斯
我对AngularJS是新手。当我有一个用户列表时,我遇到了这个问题,例如:当您单击“user1”时,它会进入user1详细信息页面。但是,当您单击“user2”时,它会显示“user1”详细信息页面,而不是“user2”详细信息页面。谁能看到我的代码,我做错了什么?多谢各位检查下面的图像。 这是我的密码 家庭控制器 律师控制员 服务Javascript 单击用户时,是否未获得相同的结果-安格拉斯,javascript,angularjs,Javascript,Angularjs,我对AngularJS是新手。当我有一个用户列表时,我遇到了这个问题,例如:当您单击“user1”时,它会进入user1详细信息页面。但是,当您单击“user2”时,它会显示“user1”详细信息页面,而不是“user2”详细信息页面。谁能看到我的代码,我做错了什么?多谢各位检查下面的图像。 这是我的密码 家庭控制器 律师控制员 服务 PS:如果您需要更多解释我的问题,请告诉我。再次感谢您的时间和帮助。选项1 您必须设置一个函数,该函数必须获取单个用户信息 var userInfo = { /
PS:如果您需要更多解释我的问题,请告诉我。再次感谢您的时间和帮助。选项1 您必须设置一个函数,该函数必须获取单个用户信息
var userInfo = { //object
getUserInfo: function () {
return $http.get('https://************/*****/**/********');
},
getSingleUserInfo: function (userId) {
return $http.get('https://************/*****/**/********?userId='+userId);
}
};
如下图所示更换您的律师控制员
app.controller('LawyerController', ['$scope', 'people', '$routeParams',
function ($scope, people, $routeParams) {
var userId = $routeParams.id;
people.getSingleUserInfo(userId).then(function (response) {
$scope.userInfo = response.data;
console.log($scope.userInfo);
}, function (error) {
console.log(error)
});
}]);
现在,您可以从后端使用参数“userId”获取单个用户信息
选项2
将所选用户存储在$rootScope中,如下所示
app.controller('HomeController', function($scope, $rootScope, people, $http) {
$rootScope.selectedUser = null; //Add this line
if (!isConfirmed) {
people.getUserInfo().then(function (response) {
$scope.userInfo = response.data;
isConfirmed = $scope.userInfo;
console.log($scope.person);
}, function (error) {
console.log(error)
});
}
});
从Home.html更改此行
<a href="#/lawyer/{{ person.id }}">
到
此时,您不需要在About.html视图中重复ng,因为所选人员位于$rootScope.selectedUser中。您只需将“person”替换为“selectedUser”您需要在scope变量中添加
路由器参数id
,以便在html中根据该id对其进行筛选。您可以这样使用
app.controller('LawyerController', ['$scope', 'people', '$routeParams',
function ($scope, people, $routeParams) {
$scope.lawyer_id = $routeParams.id;
people.getUserInfo().then(function (response) {
$scope.userInfo = response.data;
console.log($scope.userInfo);
}, function (error) {
console.log(error)
});
}]);
在HTML中
<div ng-repeat="person in userInfo.lawyers | filter:{ id: lawyer_id }">
您没有将任何内容传递给getUserInfo
,您的ajax调用如何知道通过ajax调用发送哪些参数以获取正确的用户数据?您可以利用$routeParams服务获取ID并将其传递给您的函数。您是通过ng repeat=“person in userInfo.layers | limito:1”
中的About.html
显示表单的。如果您在我的服务中看到,我是从后端获取数据的,这将返回一个结果。你能告诉我一些代码如何解决这个问题吗?所以,我能很好地理解它。@AgamBanga是这个错误导致的吗?但是,我试图取消限制,我得到了重复的表格。“我们怎样才能修复它?”贾斯汀说。您需要根据列表中的id过滤数组。虽然这会起作用,但我认为(在完整的上下文中)解释为什么这不是正确的方法可能很重要。OP希望显示单个律师的详细信息,因此(理想情况下)只返回一个律师,但如果他们不进行任何服务器端处理,只读取JSON文件,那么过滤应该在控制器或服务中完成,而不是在视图中完成<代码>$scope.lawyer=userInfo.lawyers.find(律师=>lawyer.id==lawyer\u id)然后在视图中简单地说{{lawyer.firstName}{{lawyer.lastName}}
等。他不需要加载此路由的所有用户,只需加载选定的user@AmadouBeye是的,例如:单击“User2”时,仅显示“User2”详细信息页面。是的,我同意,我是根据当前设置回答的。基本上,他需要为单个用户获取另一个api。此外,我们不知道他在api中还得到了什么,因为他正在使用userInfo.layers
打印用户。系统中必须有单独的对象userinfo@AgamBanga好的,我只有一个对象有一个5的数组。$http.get('https://***************/*********/*************)。然后(response=>response.data.find(user=>user.id==userId)
如果他们正在读取JSON文件而不进行服务器端处理,则可以使用。@AmadouBeye我尝试了您的方法。但获取此控制台错误:错误:[$injector:unpr]@AmadouBeye,它指的是HomeController
app.controller('LawyerController', ['$scope', 'people', '$routeParams',
function ($scope, people, $routeParams) {
people.getUserInfo().then(function (response) {
$scope.lawyerId = $routeParams.id;
console.log($scope.userInfo);
}, function (error) {
console.log(error)
});
}]);
app.factory('people', ['$http', function($http) {
var userInfo = { //object
getUserInfo: function () {
return $http.get('https://************/*****/**/********');
}
};
return userInfo;
}]);
var userInfo = { //object
getUserInfo: function () {
return $http.get('https://************/*****/**/********');
},
getSingleUserInfo: function (userId) {
return $http.get('https://************/*****/**/********?userId='+userId);
}
};
app.controller('LawyerController', ['$scope', 'people', '$routeParams',
function ($scope, people, $routeParams) {
var userId = $routeParams.id;
people.getSingleUserInfo(userId).then(function (response) {
$scope.userInfo = response.data;
console.log($scope.userInfo);
}, function (error) {
console.log(error)
});
}]);
app.controller('HomeController', function($scope, $rootScope, people, $http) {
$rootScope.selectedUser = null; //Add this line
if (!isConfirmed) {
people.getUserInfo().then(function (response) {
$scope.userInfo = response.data;
isConfirmed = $scope.userInfo;
console.log($scope.person);
}, function (error) {
console.log(error)
});
}
});
<a href="#/lawyer/{{ person.id }}">
<a href="#/lawyer/{{ person.id }}" ng-click="selectedUser=person">
app.controller('LawyerController', ['$scope', 'people', '$routeParams',
function ($scope, people, $routeParams) {
$scope.lawyer_id = $routeParams.id;
people.getUserInfo().then(function (response) {
$scope.userInfo = response.data;
console.log($scope.userInfo);
}, function (error) {
console.log(error)
});
}]);
<div ng-repeat="person in userInfo.lawyers | filter:{ id: lawyer_id }">