0

我正在尝试从 url 中获取产品的标识符(例如/product/<productId>),从 mongodb 中获取 Product 对象,并使该对象在$scope我的应用程序中可访问。从 url 中获取 productId 可以正常工作$routeParams,但是我很难将对象从 mongodb 中取出并进入范围。

我的猜测是我需要在products-controller.js服务器端添加代码,但是如何从服务器端的 $scope 调用 productId?

我知道查询应该是什么样子(例如db.products.find({_id : ObjectId("5422c8b2d4cc50e99f007f73")})

服务器.js
app.get('/api/products', productsController.list);

应用程序.js

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

app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
    $routeProvider
        .when('/', {
            templateUrl: '/views/productsoverview.html',
            controller: 'productsController'
        })
        .when('/product/:productId', {
            templateUrl: '/views/productFocus.html',
            controller: 'productFocusController'
        })
        .otherwise({
            redirectTo: '/'
        });
    $locationProvider.html5Mode(true)
}]);

app.controller('productsController', ['$scope', '$resource', 
    function($scope, $resource) {
        var Product = $resource('/api/products');

        $scope.products = [];

        Product.query(function (results) {
            $scope.products = results;
        });

}]);

app.controller('productFocusController', ['$routeParams', '$scope', '$resource', 
    function($routeParams, $scope, $resource) {
        if($routeParams.productId) {
            $scope.productId = $routeParams.productId

        }
}]);

产品-controller.js(服务器)

var Product = require('../models/product');
module.exports.list = function (req, res) {
  Product.find({}, function (err, results) {
    res.json(results);
  });
}
4

1 回答 1

1

如何从服务器端的 $scope 调用 productId?将 $scope.productId 作为参数传递,将其包含在 url 中,如

您在服务器端的路线可能类似于

/api/products/:productId

然后将您从客户端 url 获得的参数传递给您的资源:

pp.controller('productsController', ['$scope', '$resource', '$routeParams',
    function($scope, $resource,$routeParams) {
        var ProductEndpoint = $resource('/api/products/:productId',{productId:'@productId'});
        var product = new ProductEndPoint();
        product.productId = $routeParams.productId;
        $scope.products = [];
        Product.query(function (results) {
            $scope.products = results;
        });

}]);

在服务器端:

var Product = require('../models/product');
module.exports.list = function (req, res) {
  Product.find({_id:req.params.productId}, function (err, results) {
    res.json(results);
  });
}
于 2014-09-26T14:28:48.573 回答