Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 快速路由运行时AngularJS 1.5返回404_Javascript_Angularjs - Fatal编程技术网

Javascript 快速路由运行时AngularJS 1.5返回404

Javascript 快速路由运行时AngularJS 1.5返回404,javascript,angularjs,Javascript,Angularjs,我可以通过转到“/api/users”查看我的数据库数据。 然而,当尝试使用AngularJS 1.5获取数据时,我得到了一个404 我认为问题在于,角度路由试图在实际url不存在时到达该url。但是我相当确定我的快速路由是在任何类型的GET上使用该url返回数据。我对AngularJS很陌生,所以请原谅我 这是我的照片 var app = angular.module('app', ['ngRoute']); app.controller('HomeController', f

我可以通过转到“/api/users”查看我的数据库数据。 然而,当尝试使用AngularJS 1.5获取数据时,我得到了一个404

我认为问题在于,角度路由试图在实际url不存在时到达该url。但是我相当确定我的快速路由是在任何类型的GET上使用该url返回数据。我对AngularJS很陌生,所以请原谅我

这是我的照片

    var app = angular.module('app', ['ngRoute']);
    app.controller('HomeController', function($http){
        var vm = this;
        vm.title = "Users";
        vm.users = [];
        vm.getUsers = function(){
            $http.get('../api/users').then(function(response){
                vm.users = response.data;
            },
            function myError(response) {
                vm.title = response.statusText;
            });
        };
        vm.getUsers();

        return true;
    });
    app.config(function($routeProvider) {
        $routeProvider.when('/', {
            controller: 'HomeController',
            controllerAs: 'vm',
            templateUrl: './home.html'
        });
        $routeProvider.otherwise('/');
    });
这是server.js

var Model = require('./models/models.js');
var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var morgan = require('morgan'); 
var app = express();
var db = "mongodb://localhost/mean_stack";

mongoose.connect(db, function(err, response){
    if(err){
        console.log('Failed to connect to ' + db);
    }else{
        console.log('Successfully connected to ' + db);
    }
});

var router = express.Router();


router.get('/apis/users', function(request, response){
    Model.find({}, function(err, users){
        if(err){
            response.status(404).send(err);
        }else{
            response.status(200).send(users);
        }
    });
});
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/', router);
app.use(morgan('dev'));
app.use(express.static(__dirname + '/public'));
var port = process.env.PORT || 3000
app.listen(3000, function(){
    console.log('Listening on port ' + port);
});
我可能错过了一些基本的东西,我就是想不出来。我还根据我正在使用的教程代码对其进行了测试,并且讲师的代码运行良好。
我的server.js的顺序是否错误

尝试删除角度
$http.get()
上的相对路径。它不应该是一条相对路径

var app = angular.module('app', ['ngRoute']);

app.controller('HomeController', function($http) {
    var vm = this;
    vm.title = "Users";
    vm.users = [];
    vm.getUsers = function() {
        $http.get('api/users').then(function(response) {
                vm.users = response.data;
            },
            function myError(response) {
                vm.title = response.statusText;
            });
    };
    vm.getUsers();

    return true;
});
app.config(function($routeProvider) {
    $routeProvider.when('/', {
        controller: 'HomeController',
        controllerAs: 'vm',
        templateUrl: './home.html'
    });
    $routeProvider.otherwise('/');
});
同样在快车方面,我注意到你得到的路线可能拼错了。“api”中意外添加了“s”

router.get('/api/users', function(request, response){
    Model.find({}, function(err, users){
        if(err){
            response.status(404).send(err);
        }else{
            response.status(200).send(users);
        }
    });
});

希望这有帮助

哇。拼写。成功了。非常感谢。接下来,我说Angular routing实际上是AJAX或promises,它们只是简单地更改url哈希,对吗??是很接近还是我错过了什么?谢谢。实际上,您的$http get/post/etc应该与Express资源路由中指定的路径匹配。角度端的$RouteProviderRoutes执行散列导航、HTML模板加载、控制器初始化等,同时显式调用$http以执行ajax调用。Angular中的路由独立于$http/ajax调用。我会继续在快速路线中使用“api”或某种标识符来区分快速路线和角度路线。