解析 JSON 数据属性的最佳方法,如 Knockout.js,绑定参数格式



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 对。同样,没有看过他们的源代码。

最新更新