2014-05-12 51 views
1

我相信标题&我的简化jsFiddle Example解释我的困境。访问/设置观察者属性在JSViews的名称中有一个点

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

当涉及到使用观察者setProperty()功能,我在努力找到一种方法,在诸如“file.png”在名称中一个点的属性使用。这显然是因为当完全停止出现在set属性路径中时,JSViews认为它是对象树中更深的一步。

又名:

path.fileWithoutExt.attrs =作品。

path.fileWithExt.png.attrs =失败。

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

root.path.[file.dot].more 

或:

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

回答

0

您不能像"object['keyName'].foo"那样传递路径作为setProperty的第一个参数。 (该参数确实期望简单的点分离路径)。

但你并不需要。只需通过实际的对象$.views.observable(...),那么你只需要到叶属性名传递给setProperty

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

Updated jsfiddle:所有三个工作...

0

path["fileWithExt.png"].attrs =工程。

+0

感谢您的帮助,我想你的建议,但它不似乎没有工作:[小提琴](http://jsfiddle.net/bassmanpaul/DcAmj/8/)?我错过了什么吗? – Paul

+0

@Paul我从来没有听说过JsViews。我刚刚检查出来。原来'setProperty'方法不支持以该格式传递字符串。您可以在JavaScript中使用'object ['keyName']',但将'[keyName']“'中的字符串传递给方法/函数并不意味着它会像真正的JavaScript一样工作,因为它不是JavaScript表达式,它只是一个字符串。也就是说,你可以用''fileName_png'''替换下划线的句点,或者用JsViews写一个错误报告,这样他们就可以把这种格式的字符串输入的支持添加到'setProperty'中。 – trusktr

+0

我打算在做一个字符串替换之前和之后,但数据集是巨大的,这将是一个巨大的性能打击,我希望有一个解决方法,但我想我会提交功能请求/错误。不管怎么说,还是要谢谢你! – Paul