我被以下情况困住了。我有一个select语句,它在当前作用域me中使用一个函数。如何将me放入select函数?
var me = this;
var results = Enumerable
.from(jsonData)
.select('x,i=>{abbr:me.transform(x), name:x}')
.toArray(); //me.transform(x) will hit error'me‘是动态生成对象的一个实例,me.transform(x)也使用'me’中的其他依赖项来工作。这意味着我不能使'me.transform()‘全局函数。
编辑
var me = this;
var results = Enumerable
.from(jsonData)
.select(function(x,i){
return {abbr:me.transform(x), name:x};
}).toArray(); 实际上,这个修改是有效的,但是,我想了解如何使快捷语法工作。
发布于 2013-12-19 05:08:17
您可以做的是将对象投影到包含集合中的项和要引入查询的对象的复合对象。
您可以使用这个Capture函数来捕获变量:
function Capture(bindings, name) {
var benumerable = Enumerable.From(bindings),
itemname = name || 'Item';
return function (e) {
return e.Select(function (item) {
return benumerable.Concat(Enumerable.Return({ Key: itemname, Value: item }))
.ToObject("$.Key", "$.Value");
});
};
}在Let绑定中使用它。
var query = Enumerable.From(data)
.Let(Capture({ Me: me }))
.Select("{ abbr: $.Me.transform($.Item), name: $.Item }")
.ToArray();发布于 2013-12-08 09:15:04
是我的错。你是这个意思吗?
var me = this;
var results = Enumerable
.from(jsonData)
.select('x,i=>{abbr:' + me.transform(x) + ', name:x}')
.toArray(); //me.transform(x) will hit errorhttps://stackoverflow.com/questions/20451658
复制相似问题