【问题标题】:Angular app don't show $scope values, not error messageAngular 应用程序不显示 $scope 值,而不是错误消息
【发布时间】:2016-07-21 15:25:50
【问题描述】:

我正在学习 MEAN 堆栈,并尝试基于本课程的演示 (thinkster.io/mean-stack-tutorial#creating-schemas-with-mongoose) 构建应用程序。 我用 curl 检查了 db 上有没有,没关系,但是 angular 不要绑定它们。

--> 这是视图(index.ejs):

<html>
<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.10/angular-ui-router.js"></script>
    <script src="javascripts/angularApp.js"></script>
</head>
<body ng-app="demo">
<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <ui-view></ui-view>
  </div>
</div>
<script type="text/ng-template" id="/home.html">
    <div class="page-header">
    <h1>Patients : </h1>
  </div>

    <div ng-repeat="patient in patients">
        <a>{{patient.name}} - Nom: {{patient.surname}} - Age: {{patient.old}}</a>
    </div>
</script>
</body>
</html>

--> 这是我的节点 js 代码(index.js)

var express = require('express');
var router = express.Router();

var mongoose = require('mongoose');
var Patient = mongoose.model('Patient');

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

/* GET all patients */
router.get('/patients', function(req, res, next){
    Patient.find(function(err, patients){
        if(err){ return next(err); }

        res.json(patients);
    });
});

//configure express : retrieve automatically post by id
router.param('patient', function(req, res, next, id){
    var query = Patient.findById(id);

    query.exec(function(err, patient){
        if(err){ return next(err); }
        if(!patient){ return next(new Error("Aucun patient dans la base...")); }

        req.patient = patient;
        return next();
    });
});

module.exports = router;

--> 这是我的 Angular 代码 (angularApp.js)

var app = angular.module('flapperNews', ['ui.router']);

app.config([
    '$stateProvider',
    '$urlRouterProvider',
    function($stateProvider, $urlRouterProvider){
        $stateProvider
            .state('home', {
                url: '/home',
                templateUrl: '/home.html',
                controller: 'MainCtrl',
                resolve: {
                    postPromise: ['posts', function(posts){
                        return posts.getAll();
                    }]
                }
            });
        $urlRouterProvider.otherwise('home');
    }]);

app.factory('posts', ['$http', function($http){
    var o = {
        posts: []
    };

    o.getAll = function() {
        return $http.get('/posts').success(function(data){
            angular.copy(data, o.posts);
        });
    };

    return o;
}]);

app.controller('MainCtrl', [
'$scope',
'posts',
function($scope, posts){
    $scope.posts = posts.posts;
}]);

【问题讨论】:

  • 请先找出问题所在。是数据的获取吗?它是对范围的绑定吗?是显示值吗?你可以通过做一些检查console.log(data)
  • 我认为它绑定到范围,因为如果我到达 /patients 就可以获取数据,它会将我所有的客户都以 json 格式返回。我尝试发送一些控制台(数据),但我使用的是记录器,即“摩根”快递,它不会显示每条控制台消息。

标签: javascript angularjs node.js


【解决方案1】:

您没有在 html 中绑定控制器“MainCtrl”

【讨论】:

  • 因为他使用状态路由
  • 是的,实际上,在本教程中,他们没有在视图中绑定 MainCtrl 控制器,因为他们使用 ui-router 模块,控制器在 app.config() 中声明为“home”状态。
  • 这是 thinkster.io 教程中解释的代码克隆:github.com/jermspeaks/Thinkster-MEAN-Tutorial/blob/master/views/…
猜你喜欢
  • 2012-02-01
  • 2011-07-12
  • 2012-03-24
  • 1970-01-01
  • 2017-04-13
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多