我有一个javascript文字对象,如下所示..
var db = new Observer();
var user = {
firstName: db.observe("abc"),
lastName: "xyz",
middleName: db.observe("test")
};
注意:“firstName”值是一个函数调用db.observe(“abc”),它接受一个参数。
var Observer = function() {
this.observe = function (value) { // INITIAL value of the field
// HOW WILL I GET "key, for e.g. firstName" key here so that i can associate "value" with it.
return this;
}
}
我的要求是获取密钥的名称,在本例中为observe()函数中的'firstName'。
或者请随意推荐替代品以实现相同目的。
注意:这与我正在尝试的小型MVVM框架有关,而且我现在陷入困境。
让我知道这是否可以用JS。
REF:knockoutjs会做这样的事情...... http://knockoutjs.com/examples/helloWorld.html
答案 0 :(得分:1)
您必须向该函数的界面提供该类型的信息:
var observation = db.observe("abc");
var other_observation = db.observe("test");
var user = {
firstName: ( todayIsFriday ? observation : other_observation ),
lastName: "xyz",
middleName: ( todayIsFriday ? other_observation : observation )
};
你真的不能指望解析器在observe
函数中知道什么用作“键”,你基本上需要先在Javascript中实现一个时间机器。
因此,您确实需要将其作为额外参数传递,或者首先将db对象置于某种“状态”。
答案 1 :(得分:0)
你可以通过for..in
来实现。见下面的演示
observe()
效果很好,那么您也可以实现结果
答案 2 :(得分:0)
回答我自己的问题,因为我准备好了我的样品。感谢Yoshi的评论,这个评论让我深入挖掘......
我在这里发布了示例实现的链接,如果有人感兴趣的话......代码是错误的,但证明了数据绑定,我试图做POC ......
这是jsfiddle网址...
http://jsfiddle.net/rajeshpillai/xQkXk/22/
尝试更改文本框中的值,依赖对象会自动更新....
感谢大家的评论。这只是原始/错误,代码..将在接下来的几天内对此进行修改......