gpt4 book ai didi

javascript - 将参数从 Controller 传递到 angularjs 中的资源工厂以在数据库中搜索

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:51 24 4
gpt4 key购买 nike

说明

我的 View 中有一个文本框,可以选择要显示的模型。我需要将变量从 View 传递到 Angular 资源工厂,然后传递到服务器 Controller 来决定应将哪个模型传递到客户端 Controller 。

如您所见,我将一个名为 issuename 的变量传递给资源,然后我希望根据此参数的大小在 Controller 中选择模型。

我在 View 中的文本框中输入 Jeans,这意味着 issuename 应该等于 Jeans,并且它给出的结果应该与我手动将 searchParam 的值分配给 Jeans 时的结果相同。

但它似乎没有正确传递,因为当我在服务器 Controller 中注释掉该行时,我再也看不到牛仔裤模型了。

我已经尝试过:

  1. req.body.issuename
  2. req.params.issuename
  3. req.问题名称

仍然无法正常工作所以应该还有另一个问题

预先感谢您的帮助!

代码部分

客户服务($resource)

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

客户端 Controller

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;
});
};
};

客户端 View

<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>

服务器 Controller

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 docs中阅读更多相关信息。

关于javascript - 将参数从 Controller 传递到 angularjs 中的资源工厂以在数据库中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com