0

所以,我正在使用 mean.io 并且出于某种原因,我的 routes.js 从未命中我的“index.all”方法或“exports.all”函数,即使我需要来自服务器端控制器的函数。另外,我的路由是使用 angular-ui-router 完成的。有人知道如何从 MEAN.IO 中的路由调用后端方法吗?我继续使用:

 'use strict';

    module.exports = function(System, app, auth, database) {

        // Home route
        var index = require('../controllers/index');
 app.route('/test').get(index.all);
        app.route('/')
            .get(index.render);

    };

我想点击“index.all”,但即使我导航到/test,它仍然会得到 index.render。有人知道为什么吗?

这是控制器文件:

 'use strict';

    var mean = require('meanio');
    var mongoose = require('mongoose');
    var Composition = mongoose.model('Composition');

    exports.render = function(req, res) {
    console.log(req.user);
        var modules = [];
        // Preparing angular modules list with dependencies
        for (var name in mean.modules) {
            modules.push({
                name: name,
                module: 'mean.' + name,
                angularDependencies: mean.modules[name].angularDependencies
            });
        }

        function isAdmin() {
            return req.user && req.user.roles.indexOf('admin') !== -1;
        }


        // Send some basic starting info to the view    
        res.render('index', {
            user: req.user ? {
                name: req.user.name,
                _id: req.user._id,
                username: req.user.username,
                roles: req.user.roles
            } : {},
            modules: modules,
            isAdmin: isAdmin,
            adminEnabled: isAdmin() && mean.moduleEnabled('mean-admin')
        });
    };

    exports.all = function(req, res) {

        console.log(req.user);
        Composition.find({user: req.user}, 'title description').sort('-created').populate('user', 'name username').exec(function(err, compositions) {
            if (err) {
                return res.jsonp(500, {
                    error: 'Cannot list the compositions'
                });
            }
            res.jsonp(compositions);

        });
    };

这是前端问题还是后端问题?感谢您提供任何可能有用的建议。

4

1 回答 1

1

您正在导航。那么你点击浏览器网址中的链接吗?那么你应该尝试localhost:3000/test而不是 l ocalhost:3000/#!/test

表单的 url 是localhost:3000:/#!/<something>有角度的路线。查找角度路由和视图。使用角度视图比服务器端渲染更好。为它做角路由test并添加一个与之对应的视图。使用常规$http.get调用获取视图中的动态数据。

查看本教程以角度路由和添加视图

于 2014-07-30T09:23:31.893 回答