2015-05-08 3 views
0

Я расширяю ko.observable, чтобы записывать значения в локальное хранилище. Я хотел бы использовать имя переменной в качестве ключа, так:Есть ли способ получить имя наблюдаемого объекта Knockout?

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

будет сохраняться значение в LocalStorage с ключом 'newObservable. Есть ли способ получить значение «newObservable»? Я пробовал использовать constructor.name, но это просто возвращает имя типа переменной i.e «String» или «Number».

+1

Обратите внимание, что если вы когда-либо ставите это через мини-фильтр, имя переменной может измениться. Может быть, это может быть проблемой для вас. –

+0

Я не уверен, что вы подразумеваете под «именем наблюдаемого нокаута». Здесь должно быть более очевидно, почему это мало смысла: 'var tmp = ko.observable(); self.newObservable = tmp; that.newObservable2 = tmp; ' Теперь у вас есть 2" имени " – miensol

+0

@miensol. Я считаю, что OP хочет знать имя переменной, которую вызывала функция' persistValue', внутри самой функции. IE 'this' будет' newObservable' в 'persistValue' (если только он не связан с чем-то другим в другом месте), но им нужно получить _name_' newObservable', а не ссылку на него. –

ответ

1

Одним из способов было бы дать расширенную наблюдаемую в refence к this как

Псевдо код (я использовал бы .extend() на наблюдаемый вместо)

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

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

Тогда вы можете itterate над this и найти наблюдаемое значение

Смежные вопросы