$ http通过AngularJS获取id

时间:2017-05-04 16:26:01

标签: javascript angularjs node.js

我正在使用 AngularJS 1.6.3

我正在尝试通过id获取数据,但我的角度方面无法正常工作

服务器端:

app.get("/user/:id", function(req,res){
    testDb.findOne({_id : req.params.id}, function(err, doc){
        res.send(doc);
        res.statusCode = 200;
    });
});

AngularJS方面:

    var UserCtrl = myApp.controller('UserCtrl', function($scope,$http){
    $scope.user = null

    $scope.getByID = function() {
            $http.get("/user/" + id).then(function(response){
                console.log("get");
                $scope.user = response.data;
            });
        }

getByID();
    });

我收到错误“id未定义”。但我想从网址上获取它。

5 个答案:

答案 0 :(得分:2)

最后,我使用$ routeParams找到了解决方案。

控制器:

var UserCtrl = myApp.controller('UserCtrl', function($scope,$http,$routeParams){
$scope.user = null;
var id = $routeParams.id;
$scope.getByID = function() {
        $http.get("/user/" + id).then(function(response){
            console.log("get");
            $scope.user = response.data;
        });
    }

   getByID();
});

答案 1 :(得分:1)

在调用时将参数传递给函数

#include <algorithm>
#include <cstdint>
#include <vector>

struct Point {
    std::vector<uint32_t> vec{};
};

std::vector<uint32_t> inter_section(const Point& p1, const Point& p2)
{
    auto v1 = p1.vec;
    auto v2 = p2.vec;
    std::sort(v1.begin(), v1.end());
    std::sort(v2.begin(), v2.end());

    std::vector<uint32_t> v3;
    std::set_intersection(v1.begin(), v1.end(),
                          v2.begin(), v2.end(),
                          std::back_inserter(v3));
    return v3;
} 

int main () {
    Point p1, p2;
    std::vector<uint32_t> res = inter_section(p1, p2);
}

答案 2 :(得分:0)

您可以使用$ state来获取状态参数。

var UserCtrl = myApp.controller('UserCtrl', function($scope,$http,$state){
    $scope.user = null;

    $scope.getByID = function() {
            $http.get("/user/" + $state.params.id).then(function(response){
                console.log("get");
                $scope.user = response.data;
            });
        }

$scope.getByID();
    });

答案 3 :(得分:0)

  1. 安装ui-router。

    bower install --save angular-ui-router#0.3.1

  2. 链接index.html中的脚本。

    &lt;!doctype html&gt;
     &lt; html lang =“en_US”&gt;
        &LT; HEAD&GT;
            &lt; script type =“text / javascript”language =“javascript”charset =“utf-8”src =“lib / angular.js”&gt;&lt; / script&gt;
           &lt; script type =“text / javascript”language =“javascript”charset =“utf-8”src =“lib / angular-ui-router / angular-ui-router.js”&gt;&lt; / script&gt;
        &LT; /头&GT;
        &lt; body ng-app =“myApp”&gt;
            &lt; div ui-view&gt;
           &LT; / DIV&GT;
        &LT; /体&GT;
    &LT; / HTML&GT;

  3. 在app.js中添加ui路由器依赖项。

    var myApp = angular.module('helloworld',['ui.router']);

  4. 在config中定义状态。

  5. 您可以定义$ state以将id作为状态参数传递给页面。

    routes.js

    myApp.config(function($stateProvider){
        $stateProvider
                .state('home', {
                    url: '/home/:id',
                    templateURL:'home_page.html',
                    controller: 'UserCtrl'
                    }
                });
    });
    

    userCtrl.js

    var UserCtrl = myApp.controller('UserCtrl', function($scope,$http,$stateParams){
            $scope.user = null;
    
            $scope.getByID = function() {
                    $http.get("/user/" + $stateParams.id).then(function(response){
                        console.log("get");
                        $scope.user = response.data;
                    });
                }
    
        $scope.getByID();
            });
    
    1. 最后,重定向到ID为

      的页面

      来自JavaScript :$ state.go('home',{id:'12345'});

      来自html :&lt; a ui-sref =“home({id:'12345'})”&gt;主页&lt; / a&gt;

答案 4 :(得分:0)

我希望这对你有所帮助。

我建议您使用params部分传递变量,如下所示 AngularJS To Node JS

AngularJS代码

    $http({
           method : "GET",
           url : "http://localhost:4800/p",
           params:{"tagId":"5"}
         }).then(function mySucces(response) {
            console.log("success");
            }, function myError(response) {
     });

节点JS

app.get('/p', function (req, res) {
        console.log(req.query.tagId)
        console.log("call");
    });