TL;DR:如何解析Knockout.js的绑定参数格式(不是JSON,但类似)?
--
我有一个我自己无法回答的问题。
我喜欢 Knockout.js 和其他 MVVM 库接受(理解)格式配置的方式
data-bind="name: value, name2: {subname: subvalue, subname2: subvalue2}, name3: value3"
,
这是 JSON 式的,但不是有效的 JSON(即可以在没有顶级{}
或 paren 的情况下很好地解决)。
问题是如何以最佳方式解析这种格式,例如,最好使用一些内置(shim)函数并且没有eval。例如,像JSON.parse这样的东西。
我查看了 Knockout.js 代码以首先找到答案,但我找不到解析绑定参数的位置。也许我忽略了显而易见的事情,我不知道。
建议或链接或代码或任何种类的建议表示赞赏。提前谢谢你!
Knockout.js的绑定源代码可以在这里找到:
https://github.com/knockout/knockout/blob/master/src/binding/expressionRewriting.js
与所有解析一样,魔鬼在细节中,这就是为什么它如此复杂!
没有像 mattmanser 建议的那样查看源代码(他是对的),答案在你的问题中:解析。
具体来说,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
编辑:处理它的一种方法是将数据绑定属性读取为数组(有效地拆分为","),然后将项目解析为 name:value 对。同样,没有看过他们的源代码。