首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq.js范围

Linq.js范围
EN

Stack Overflow用户
提问于 2013-12-08 09:09:24
回答 2查看 223关注 0票数 1

我被以下情况困住了。我有一个select语句,它在当前作用域me中使用一个函数。如何将me放入select函数?

代码语言:javascript
复制
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()‘全局函数。

编辑

代码语言:javascript
复制
var me = this;
var results = Enumerable
              .from(jsonData) 
              .select(function(x,i){
                  return {abbr:me.transform(x), name:x};
              }).toArray(); 

实际上,这个修改是有效的,但是,我想了解如何使快捷语法工作。

EN

回答 2

Stack Overflow用户

发布于 2013-12-19 05:08:17

您可以做的是将对象投影到包含集合中的项和要引入查询的对象的复合对象。

您可以使用这个Capture函数来捕获变量:

代码语言:javascript
复制
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绑定中使用它。

代码语言:javascript
复制
var query = Enumerable.From(data)
    .Let(Capture({ Me: me }))
    .Select("{ abbr: $.Me.transform($.Item), name: $.Item }")
    .ToArray();
票数 2
EN

Stack Overflow用户

发布于 2013-12-08 09:15:04

是我的错。你是这个意思吗?

代码语言:javascript
复制
var me = this;
var results = Enumerable
          .from(jsonData) 
          .select('x,i=>{abbr:' + me.transform(x) + ', name:x}')
          .toArray(); //me.transform(x) will hit error
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20451658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档