javascript - 有什么方法可以获取 Knockout 可观察对象的名称吗?

标签 javascript knockout.js

我正在扩展 ko.observable 以将值写入本地存储。我想使用变量的名称作为键,所以:

self.newObservable = ko.observable();    
self.newObservable.persistValue(25)

将使用“newObservable”键将值保留在 localStorage 中。有没有办法获取“newObservable”值?我尝试过使用 constructor.name 但它只返回变量的类型名称,即“String”或“Number”。

最佳答案

一种方法是为扩展的可观察对象提供对 this 的引用,例如

伪代码(我会在 observable 上使用 .extend() 来代替)

ViewModel = function() {    
    this.newObservable = ko.perstableObservable(this);
}

ko.perstableObservable = function(owner) {
   this.owner = owner;
   ...
};

然后你可以迭代this并找到可观察的引用

persistValue = function(value) {
   var name = null;
   for(var index in this.owner) {
      if(this.owner[index] === this) {
         name = index;
         break;
      }
   }
   ...
}

关于javascript - 有什么方法可以获取 Knockout 可观察对象的名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30121249/

相关文章:

jquery - knockoutjs 数据绑定(bind)问题

knockout.js - 订阅可观察对象以更新 View 模型

javascript - 带有延迟绑定(bind)的 Pager.js

javascript - 如何仅使用一个数据绑定(bind)来调用 2 个函数?

javascript - obj ['' ] 在 Javascript 中是什么意思?

html - 将 knockout 复选框标签 css-cursor 从指针设置为不允许

javascript - 加载 CSS 未 100% 工作

javascript - jQuery mouseout 动画仅在第二次悬停后触发

javascript - 嵌套的延迟 Q Promise 解析可以简化吗?

javascript - 我无法使用 onclick 来工作