Angular.js linq.js Where filter不能正常工作
Angular.js linq.js Where filter not working properly
我在AngularJs中使用linq.js,我在很多地方使用,它的工作很好,现在我在不同的地方使用,它不适合我。不工作意味着我没有达到预期的结果,它总是显示{}
。请看看下面的代码,如果我做错了什么。
var app = angular.module('testApp', ['angular.filter', 'angular-linq', 'ngSelect2']);
app.controller('testController', function ($scope, $http, $timeout, $q, $linq){
$scope.Vendors =
[
{VendorId:"VND001", VendorName:"Pharma Plus Pharmacy", Address:"Bahawalpur"},
{VendorId:"VND001", VendorName:"Pakistan Pharma", Address:"Bahawalpur"}
];
$scope.InvoiceItems =
[
{
VendorId:"VND001",
ItemName:"Gold Set Jewellery",
ItemDesc:"Some Description",
Cost:280.50,
Quantity:50
},
{
VendorId:"VND001",
ItemName:"First Class HandWatch",
ItemDesc:"Some Description",
Cost:100.50,
Quantity:50
},
{
VendorId:"VND002",
ItemName:"Gold Set Jewellery",
ItemDesc:"Some Description",
Cost:280.50,
Quantity:50
},
{
VendorId:"VND002",
ItemName:"First Class HandWatch",
ItemDesc:"Some Description",
Cost:100.50,
Quantity:50
},
];
$scope.totalAmount = function(vendorId){
return $linq.Enumerable().From($scope.InvoiceItems).Where("x => x.VendorId =="+vendorId).Select(function(x){
return (+x.Cost)*x.Quantity;
}).Sum();
}
}
}
请看下面的html
<div class="row" ng-app="testApp">
<div class="col-xs-12" ng-controller="testController" ng-init="initializeDefault()">
<div ng-repeat="v in Vendors">
<div>{{ v.VendorId }}</div>
<div>{{ v.VendorName }}</div>
<div>{{ v.Address }}</div>
<div>{{ totalAmount(v.VendorId) }}</div>
</div>
</div>
</div>
请尽快回复。
我看到的第一个问题是where子句中的谓词格式错误。
x.VendorId
是一个字符串,您试图将其与vendorId
中传递的字符串进行比较。但是你生成的lambda是:
x => x.VendorId ==VND001
将不会产生任何结果。
相反,你需要生成:
x => x.VendorId == 'VND001'
您的查询应该是(使用更紧凑的lambda语法):
$linq.Enumerable().From($scope.InvoiceItems)
.Where("$.VendorId == '" + vendorId + "'")
.Select("+$.Cost * $.Quantity")
.Sum();
但是,如果您预先组合这些查询并将总和作为查询的一部分,而不是单独的查询,则会更好。你必须把这两个数组连接起来。
$scope._vendors = ...;
$scope._invoiceItems = ...;
$scope.VendorQuery = function() {
return $linq.Enumerable().From($scope._vendors)
.GroupJoin($scope._invoiceItems, "$.VendorId", "$.VendorId",
"{ Id: $.VendorId, Name: $.VendorName, Address: $.Address, "
+ "Total: $$.Sum('+$.Cost * $.Quantity') }")
.ToArray();
}
然后绑定到视图:
<div ng-repeat="v in VendorQuery()">
<div>{{ v.Id }}</div>
<div>{{ v.Name }}</div>
<div>{{ v.Address }}</div>
<div>{{ v.Total }}</div>
</div>
相关文章:
- Angular Js布线工作不正常
- Javascript键代码捕获非拉丁字符?(还需要在selectize.js中工作)
- JS不工作:Sublime 3编辑器-Var main=函数()-=不是“”;激活“;(功能新手)
- 当我移动引用three.js的html文件时,three.js停止工作
- 固定顶部导航的impress.js无法工作
- 噩梦JS不工作
- RubyonRails中的JavaScript表单验证-让JS正常工作,但我该把它放在哪里
- 关闭网页时没有显示 Js 的工作时间
- 使list.js和react.js协同工作
- .isNumber是如何在undercore.js中工作的
- Async.js队列工作程序未完成
- 在fter.js插件工作之前,我错过了什么
- Typeahead.js远程工作,但预取不工作't
- jsFiddle工作,网站JS不工作
- 无法获得蓝鸟承诺和猫鼬的 save() 在 node.js 中工作
- 节点中的空对象 X 射线抓取器.js不工作
- 如何使从数据库获取的 Ruby 代码在 JS 中工作
- 让 js 和 css 与 Ratchet 的 push.js 一起工作
- 加载的JS的工作方式与硬编码不同
- 假服务器与要求.js一起工作