Javascript 单击用户时,是否未获得相同的结果-安格拉斯

Javascript 单击用户时,是否未获得相同的结果-安格拉斯,javascript,angularjs,Javascript,Angularjs,我对AngularJS是新手。当我有一个用户列表时,我遇到了这个问题,例如:当您单击“user1”时,它会进入user1详细信息页面。但是,当您单击“user2”时,它会显示“user1”详细信息页面,而不是“user2”详细信息页面。谁能看到我的代码,我做错了什么?多谢各位检查下面的图像。 这是我的密码 家庭控制器 律师控制员 服务 PS:如果您需要更多解释我的问题,请告诉我。再次感谢您的时间和帮助。选项1 您必须设置一个函数,该函数必须获取单个用户信息 var userInfo = { /

我对AngularJS是新手。当我有一个用户列表时,我遇到了这个问题,例如:当您单击“user1”时,它会进入user1详细信息页面。但是,当您单击“user2”时,它会显示“user1”详细信息页面,而不是“user2”详细信息页面。谁能看到我的代码,我做错了什么?多谢各位检查下面的图像。

这是我的密码

家庭控制器

律师控制员

服务


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 }">