在控制器的angularjs中将parameter passing给资源工厂以在数据库中进行search

说明

我有一个文本框来select要显示的模型。 我需要将视图中的variables传递给angular色资源工厂,以传递给服务器控制器,以决定将哪个模型传递给客户端控制器。

正如你所看到的,我把一个名为issuename的variables传递给资源,然后我希望通过这个参数的大小select控制器中的模型。

我在文本框中键入牛仔裤,这意味着issuename应该等于牛仔裤,它应该给我相同的结果,因为当我手动分配searchParam的价值牛仔裤。

但它似乎没有正确传递,因为当我注释掉在服务器控制器中的行,我不能再看到牛仔裤模型。

我努力了:

  1. req.body.issuename
  2. req.params.issuename
  3. req.issuename

而且还不行,所以应该还有另外一个问题

在此先感谢您的帮助!

代码部分

客户服务($资源)

angular.module('alls').factory('Alls', ['$resource', function($resource) { return $resource('alls/:issuename', {}, { get:{ method: 'GET', isArray:true } }); }]); 

客户控制器

 angular.module('alls').controller('AllsController', ['$scope', '$stateParams', '$location', 'Authentication', 'Alls', 'Jeans', function($scope, $stateParams, $location, Authentication, Alls, Jeans) { $scope.search = function(){ Alls.get({issuename: $scope.issueinput},function(response){ $scope.alls = response; }); }; }; 

客户端视图

 <section data-ng-controller="AllsController"> <div class="page-header"> <h1>Alls</h1></div> <div class="Search"> <h2>Search Section</h2> <label>Search</label> : <input data-ng-model="issueinput"></input> {{issueinput}} <button data-ng-click="search()">Search</button> </div> <br></br><br></br> <h2>Result Section</h2> <div class="list-group"> <table class="table table-striped table-bordered"> <thead> <tr> <th>Name</th> <th>Color</th> </tr> </thead> <tbody> <tr data-ng-repeat="all in alls"> <td data-ng-bind="all.name"></td> <td data-ng-bind="all.color"></td> </tr> </tbody> </table> </div> </div> 

服务器控制器

 exports.list = function(req, res) { var searchParam = req.body.issuename; searchParam = 'Jeans'; // Comment Out or Not // mongoose.model(searchParam).find().sort('-created').populate('user', 'displayName').exec(function(err, alls) { res.jsonp(alls); }); }; 

我想你需要通过“@”符号在你的$ resource声明中传递“issuename”参数。 像这样:

 angular.module('alls').factory('Alls', ['$resource', function($resource) { return $resource('alls/:issuename', {issuename: '@issuename'}, { get:{ method: 'GET', isArray:true } }); }]); 

当你调用Alls.get({issuename: $scope.issueinput}时,这会告诉你的资源从发布的对象中获取属性“issuename”

您可以在$ resource文档中阅读更多