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