0

MEAN スタック アプリケーションに問題があります。私はnode、angular、mongoDB、express、jadeの初心者です...それが失敗した理由を説明するかもしれません...

すべての要件に一致する単一のチュートリアルが見つからなかったため、さまざまなチュートリアルからこのアプリケーションを構築しましたが、データへのアクセス/整理に同じ方法を使用することはありません。サービスを宣言することもあれば、ルートプロバイダーを使用することもあります...

したがって、ここでアプリケーションをセットアップする方法を示します。

   app.js
   package.json
   routes.js

---config
       auth.js
       database.js
       passport.js

---node_modules
[...]
---public
   +---images
   +---javascripts
   |   |   CarListController.js
   |   |   
   |   \---vendor
   \---stylesheets
           style.css

---views
       index.jade
       layout.jade
       login.jade
       profile.jade

問題は私の index.jade にあります。ここでは、車のリストを表示します (そして、後でそのリストを検索します)。

そこで、コントローラー (CarListController.js) を作成します。

function CarListController($scope, $http) {
    console.log('Calling CarListController'));
    $http.get('/api/cars').success(function(data) {
          $scope.cars = data.cars;
        });
    });

私の routes.js では、json で車のリストを取得します。

module.exports = function(app, passport) {

app.get('/api/cars', function(req, res) {
// load the things we need
var mongoose = require('mongoose');

// define the schema for our user model
var carSchema = mongoose.Schema({
    marque        : String,
    modele        : String,
    desc          : String
 });

// create the model for users and expose it to our app
var Car = module.exports = mongoose.model('Car', carSchema);

    // use mongoose to get all cars in the database
        Car.find(function(err, car) {
    console.dir(car);
            // if there is an error retrieving, send the error. nothing after res.send(err) will execute
            if (err)
                res.send(err)

            res.json(car); // return all cars in JSON format
        });
    });
app.get('/', function(req, res) {       
    res.render('index.jade') // load the index.jade file
});

そして最後に私のindex.jadeで:

html(lang='fr', ng-app='LocatyvModule')
head
 meta(charset='utf-8')
 title My AngularJS App
 link(rel='stylesheet', href='/stylesheets/style.css')
 script(type='text/javascript', src='/javascripts/vendor/angular/angular.js')
 script(type='text/javascript', src='/javascripts/vendor/angular-bootstrap/ui-bootstrap-tpls.js')
 script(type='text/javascript', src='/javascripts/LocatyvModule.js')
 script(type='text/javascript', src='/javascripts/CarListController.js')
body
 div.container(ng-controller="CarListController")
  div
   div.row.car(ng-repeat="car in cars")
     p A CAR!

"localhost:8080/api/cars" を呼び出すと、DB に 3 台の車が表示されます。

index.jade を呼び出すと、3 行が表示されず、コントローラーでトレースが取得されません。私は何を間違えましたか?

また、私のプロジェクト組織はあまり良くないと思います(何かヒントがあれば、遠慮なく言ってください)。

4

1 に答える 1

2

問題は、角度モジュールとコントローラーが登録されていないことだと思います。コントローラー JavaScript で以下のコードを試すことができます。

var app = angular.module('LocatyvModule', []);
app.controllers.controller('CarListController', function ($scope, $http) {
    console.log('Calling CarListController'));
    $http.get('/api/cars').success(関数(データ) {
          $scope.cars = data.cars;
        });
    });
);
于 2014-03-27T02:11:38.563 に答える