标签: expando

Javascript expando对象

什么是javascripts中的expando对象?

出于什么目的我们需要这个?任何完整的例子将不胜感激

我在这里找到了1篇文章Javascript:Web开发的红头发的继子

javascript expando

49
推荐指数
2
解决办法
2万
查看次数

什么是Dart"Expando"功能,它有什么作用?

最近在Dart上看到过"Expando"一词.听起来不错.API没有为我提供太多线索.

一两个例子可能是最有帮助的!

(不确定这是否相关,但我最担心的是将方法(getter)和/或变量添加到类中.希望这可能是解决这个问题的关键.(提示:我正在使用Nosuchmethod方法现在,希望能够返回未完成方法的值.))

提前致谢,

_swarmii

expando nosuchmethod dart

18
推荐指数
2
解决办法
1941
查看次数

使用jQuery的数据存储区与expando属性

我正在使用jQuery开发代码,需要存储与某些DOM元素相关的数据.关于如何使用html元素存储任意数据还有很多其他问题,但我更感兴趣的是为什么我会选择一个选项而不是另一个.

为了极其简化的参数,我想要存储一个"lineNumber"属性,其中每一行都是"有趣"的表.

选项1只是在每个DOM元素上设置一个expando属性(我希望我正确使用'expando'一词):

$('.interesting-line').each(function(i) { this.lineNumber = i; });
Run Code Online (Sandbox Code Playgroud)

选项2是使用jQuery的data()函数将属性与元素相关联:

$('.interesting-line').each(function(i) { $(this).data('lineNumber', i); });
Run Code Online (Sandbox Code Playgroud)

忽略我的示例代码的任何其他缺点,是否有充分的理由为什么您会选择一种方法来存储属性而不是另一种?

javascript jquery expando

17
推荐指数
2
解决办法
7425
查看次数

向HTML元素添加元数据的最佳方法

我正在尝试整合一种在HTML中标记各种组件的方法,这些组件由jQuery脚本解析并在页面加载时创建.

例如,目前我可以将以下内容放入我的页面..

<a href="link.html" class="Theme-Button Theme-Button-Style-win2007 Theme-Button-iconLeft Theme-Button-AlignmentCenter Theme-Button-fullWidth">This is a button</a>
Run Code Online (Sandbox Code Playgroud)

当jQuery脚本找到它时,它会注入创建一个带有图标的按钮所需的html以及所有必要的事件等.

但是,这很麻烦,需要很多长类名.我宁愿做这样的事......

<a href="#" class="Theme-Button" data="{style: 'win2007', icon: 'left', align:'center', fullWidth: true}"></a>
Run Code Online (Sandbox Code Playgroud)

它不是那么短,但在我看来更整洁,需要更少的解析.麻烦的是,我已经对"expandos"进行了一些研究,我相当肯定有些浏览器会不喜欢它并且它不会验证.

有人有更好的建议吗?

html css jquery expando

17
推荐指数
1
解决办法
1万
查看次数

如何将gridview数据绑定到ExpandoObject

当我尝试将ASP.NET数据绑定GridViewIEnumerable<ExpandoObject>使用时ObjectDataSource,我得到以下异常.

System.Web.HttpException(0x80004005):DataBinding:'System.Dynamic.ExpandoObject'不包含名为'StoreID'的属性.

有谁知道我怎么能数据绑定到ExpandoObjects

c# dynamic expando

8
推荐指数
1
解决办法
2671
查看次数

如何使用Colllection.ToDictionary()将Dictionary <dynamic,dynamic>转换为Dictionary <string,string>

我正在使用Dapper将2列结果集提取到字典中.我注意到当我将鼠标悬停在结果集上时,intellisense向我显示了一个.ToDictionary(),但由于dapper使用动态属性/ expandoObject,我无法使其工作

Dictionary<string, string > rowsFromTableDict = new Dictionary<string, string>();
using (var connection = new SqlConnection(ConnectionString))
{
   connection.Open();
   var results =  connection.Query
                  ("SELECT col1 AS StudentID, col2 AS Studentname 
                    FROM Student order by StudentID");
    if (results != null)
    {
    //how to eliminate below foreach using results.ToDictionary()
    //Note that this is results<dynamic, dynamic>
         foreach (var row in results)
         {
              rowsFromTableDict.Add(row.StudentID, row.StudentName);
         }
         return rowsFromTableDict;
     }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

c# expando expandoobject c#-4.0 dapper

8
推荐指数
1
解决办法
3836
查看次数

为什么jQuery的.data()函数能更好地防止内存泄漏?

关于jQuery实用程序函数jQuery.data(),在线文档说:

"jQuery.data()方法允许我们以一种不受循环引用安全的方式将任何类型的数据附加到DOM元素,从而避免内存泄漏."

为什么使用:

document.body.foo = 52; 
Run Code Online (Sandbox Code Playgroud)

可以导致内存泄漏 - 或者在什么条件下 - 以便我应该使用

jQuery.data(document.body, 'foo', 52);
Run Code Online (Sandbox Code Playgroud)

在任何情况下,我是否总是更喜欢.data()而不是使用expandos?

(如果您能提供一个比较差异的示例,我将不胜感激)

谢谢,

burak ozdogan

javascript jquery memory-leaks expando

7
推荐指数
2
解决办法
2138
查看次数

在Liferay中获取自定义用户字段值(expando)

我在Liferay中添加了一个自定义用户字段,并为特定用户设置了一个值.

如何以编程方式访问此值?

如果我试试这个,我总是得到null:

String customAttr = (String)user.getExpandoBridge().getAttribute("customAttr");
Run Code Online (Sandbox Code Playgroud)

user.getExpandoBridge().getAttribute("customAttr")返回Type的值java.IO.Serializable.

也许这里的演员是错的?

但是自定义属性确实存在(以下代码打印出属性键):

for (Enumeration<String> attrs = user.getExpandoBridge().getAttributeNames(); attrs.hasMoreElements();)
    _log.info("elem: '" + attrs.nextElement() + "'");
Run Code Online (Sandbox Code Playgroud)

不知怎的,我在这里错过了这一点......

java liferay expando

6
推荐指数
1
解决办法
2万
查看次数

实施Google App Engine中记录更改的高效审计跟踪 - 设计模式

我有一个很常见的设计问题:我需要为Google App Engine中的记录实现历史记录(审计跟踪).历史日志必须是结构化的,即我不能将所有更改加入到一些自由格式文本中并存储在字符串字段中.

我已经考虑了历史模型的以下选项,并且在注意到选项#1中的性能问题之后,我选择实现选项#3.但是,如果这个解决方案是高效和可扩展的,那么我们会有些怀疑.例如:随着选项#3中动态属性数量的增加,性能是否会显着下降?

您是否对每个选项的优缺点有更深入的了解,或者可以建议适用于Google App Engine数据库特征的其他审计跟踪设计模式?

  1. 使用经典SQL"master-detail"关系
    • 优点
      • 具有SQL背景的数据库开发人员易于理解
      • clean:历史记录及其属性的直接定义
      • 搜索性能:轻松搜索历史记录(可以使用索引)
      • 故障排除:管理工具轻松访问(_ah/admin)
    • 缺点
      • 通常不建议在GAE DB中以这种方式实现一对多关系
      • 读取性能:过多的记录读取操作以显示长的审计跟踪,例如在大记录列表的详细信息窗格中.
  2. 将历史存储在BLOB字段中(酸洗python结构)
    • 优点
      • 易于实施和灵活
      • 阅读性能:非常高效
    • 缺点
      • 查询性能:无法使用索引进行搜索
      • 故障排除:无法通过admin db viewer(_ah/admin)检查数据
      • 不洁净:不太容易理解/接受SQL开发人员(他们认为这很难看)
  3. 在Expando的动态属性中存储历史记录.例如,对于每个字段fieldName创建history_fieldName_n字段(其中n = <0..N>是一些历史记录)
    • 优点:
      • 简单:易于实现和理解
      • 故障排除:可以通过管理界面读取所有历史属性
      • 读取性能:一次读取操作以获取记录
    • 缺点:
      • 搜索性能:不能简单地搜索历史记录(它们有不同的名称)
      • 不太干净:初看时,属性数量可能会令人困惑
  4. 将历史记录存储在主记录的某些列表字段中.例如.为每个fieldName创建一个fieldName_history列表字段
    • 优点:
      • clean:直接定义历史属性
      • 简单:SQL开发人员易于理解
      • 读取性能:一次读取操作以获取记录
    • 缺点:
      • 搜索性能:可以使用搜索索引仅适用于只要有一定的价值,不能搜索在一些特定的时间具有值的组合记录记录;
      • 故障排除:在admin db viewer中检查列表很困难

python performance audit google-app-engine expando

6
推荐指数
1
解决办法
1783
查看次数

为什么JQuery没有公开其UUID功能?

在底层jQuery使用地图"的UUID"(只是将其作为保持计数器jQuery.uuid)来解决著名的内存泄漏问题浏览器有当您从Javascript的DOM附加属性的标签.代替这样做,JQuery使用它$.data(tag, name, value)来存储从uuid键入的地图中的数据(可以通过检查确定的键tag[jQuery.expando]).

虽然$.data()非常有用,但有时您希望将数据映射到标记而不将数据转储到一个全局存储桶中 - 您需要自己的小数据桶,例如,检查长度或循环.

作为一个人为的例子,假设你有点击时可以旋转通过4种状态之一的图标.当一个处于状态2时,您希望将其添加到状态2中的图标数组.最明显的方法是将标记添加到数组中; 但这样做会造成内存泄漏.你可以调用$.data()复选框,但这并不能完成你想要做的事情 - 你必须遍历所有复选框来检查$.data()它们以找出哪些是和不在列表中.

你需要在数组中存储一些标签的抽象,这就是jQuery的UUID.您可以编写自己的UUID功能,但理想情况下,您只需利用已内置于JQuery的UUID功能,无论是代码大小还是质量原因.您可以要求JQuery通过调用隐式地将UUID附加到标记$.data(tag, 'irrelevant', 1),然后检查tag[jQuery.expando]以获取其UUID,最后在列表中使用它...但这有点像黑客.真正理想的是在公共API中公开以下内容:

$.getUuid(tag):检查并创建一个UUID(如果不存在) - 理想情况下,该方法是从中分解的,$.data()并为传入的标记创建或获取uuid.

那么,有没有一个原因在jQuery中没有考虑到它自己的方法?这在某种程度上有害吗?它只是从来没有看似有用的东西吗?

我应该注意到,我实际上已经在我们正在使用的jQuery版本中考虑了它,并且它非常有用.但也许存在潜在的风险,我没有打算使用它.我也知道一个插件可以实现这一点,但它有点破碎 - 并且有两个代码路径来执行相同的UUID功能既有点浪费又有点脆弱.

jquery uuid expando

6
推荐指数
1
解决办法
3074
查看次数