将id从视图发送到另一个视图(AngularJS,NodeJs,HTML)

时间:2017-03-22 08:04:08

标签: javascript html angularjs

我有一个用于列出MongoDB用户的HTML页面,此页面删除并更新用户,我在更新按钮中遇到问题我想点击按钮时出现一个带有表单的新Html页面并获取id用户来自新控制器的另一个控制器中的上一个视图.. 我在ng-click(item._id)中传递了id,我可以在控制台中显示它,但在新页面中,新控制器无法读取id(id未定义)..

$scope.update = function (id) {
        console.log(id);
        $http.get('/readbyid/' + id).success(function (messages) {
            $scope.item = messages;
        });

}

在新控制器中:

$http.get('/readbyid/' + id).success(function (messages) {
        $scope.Candidator = messages;
        console.log(id);
    });

2 个答案:

答案 0 :(得分:3)

定义当前和另一个视图的路线:

.state({
  name:'currentView',
  url:'/currentView',
  templateUrl:'views/currentView.html',
  controller:'currentViewCtrl'
})
.state({
  name:'updateView/:customerID',
  url:'/updateView/:customerID',
  templateUrl:'views/updateView.html',
  controller:'updateViewCtrl'
})

按下按钮时调用一个函数,使用

将customerID发送到下一个视图

$location.path('updateView/' + customerID);

在下一个视图中,使用

访问customerID

$stateParams['customerID']

这只是为了给你一个想法,我猜你现在可以连接点了。告诉我,如果我不够清楚。

答案 1 :(得分:1)

根据您的设置,有一些方法可以达到结果。

  1. 如果您使用的是Angular UI路由器,则您拥有$stateParams服务,该服务在routeChanges期间存储数据并将数据从视图传输到另一个
  2. 如果您正在使用" vanilla Angular"您可以相对于发生转换的模块创建存储服务。这样你就必须每次都要清洁你不需要的东西。在我看来,脖子上有点疼痛。 Angular UI是更好的选择
  3. 如果数据可以存在于您的历史记录中,您可以使用查询字符串参数