【问题标题】:Access/Set an Observer Property With a Dot in the Name in JSViews在 JSViews 中访问/设置名称中带有点的观察者属性
【发布时间】:2014-05-12 11:51:13
【问题描述】:

我相信标题和我的简化版jsFiddle Example 解释了我的困境。

基本上,我正在处理一个非常大的多维观察者对象,其中包含文件夹和文件,所有这些都具有动态属性名称。

在使用 Observer setProperty() 函数时,我正在努力寻找一种方法来在名称中带有点的属性上使用它,例如“file.png”。这显然是因为当句号出现在设置的属性路径中时,JSViews 认为它​​在对象树中更深了一步。

又名:

path.fileWithoutExt.attrs = 有效。

path.fileWithExt.png.attrs = 失败。

所以我的问题是“有没有办法实现属性设置,还是不可能或功能要求?”可能是这样的:

root.path.[file.dot].more

或:

root.path.{{file.dot}}.more

【问题讨论】:

    标签: javascript jquery jsviews


    【解决方案1】:

    您不能将"object['keyName'].foo" 之类的路径作为setProperty 的第一个参数传递。 (该参数确实需要简单的点分隔路径)。

    但你不需要。只需将实际对象传递给$.views.observable(...),然后您只需将叶子属性名称传递给setProperty

    $.observable( files.images[n] ).setProperty( 'modified', 'Modified!' );
    $.observable( files.images[n] ).setProperty( 'alias', a ); 
    

    Updated jsfiddle: 三个都工作...

    【讨论】:

      【解决方案2】:

      path["fileWithExt.png"].attrs = 有效。

      【讨论】:

      • 感谢您的帮助,我尝试了您的建议,但似乎不起作用:Fiddle?我错过了什么吗?
      • @Paul 我以前从未听说过 JsViews。我刚刚检查过了。原来setProperty 方法不支持以该格式传入字符串。您可以在 JavaScript 中执行 object['keyName'],但是将 "object['keyName']" 中的字符串传递给方法/函数并不意味着它会像真正的 JavaScript 一样工作,因为它不是 JavaScript 表达式,它只是一个字符串。话虽如此,您可以像"fileName_png" 中那样用下划线替换句点,或者使用 JsViews 提交错误报告,以便他们可以向setProperty 添加对该格式的字符串输入的支持。
      • 我打算在前后进行字符串替换,但数据集很大,因此会对性能造成巨大影响,我希望有一个解决方法,但我想我会提交功能请求/漏洞。还是谢谢!
      猜你喜欢
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      相关资源
      最近更新 更多