Javascript 如何使用元素获取数据绑定键和值可观测值?
我需要使用元素获取数据绑定键和可观察的值Javascript 如何使用元素获取数据绑定键和值可观测值?,javascript,jquery,mvvm,knockout.js,viewmodel,Javascript,Jquery,Mvvm,Knockout.js,Viewmodel,我需要使用元素获取数据绑定键和可观察的值 <select id="selector" data-bind="options:selectOptions,value:selectedValue"></select> var ViewModel = { selectOptions:ko.observableArray([...]), selectedValue:ko.observable() ... some other stuff ... }
<select id="selector" data-bind="options:selectOptions,value:selectedValue"></select>
var ViewModel = {
selectOptions:ko.observableArray([...]),
selectedValue:ko.observable()
...
some other stuff
...
}
dataFor(元素)将有所帮助。看-
在具有图元的其他视图模型中,调用:
var bound_vm = ko.dataFor(element)
bound_vm将是针对该元素绑定的任何视图模型
我认为您无法获得原始绑定的密钥/VAL;KO已将其解析为函数。可能在另一个视图模型中,您想更改绑定到选项的内容,但不知道它的名称?可以使用jQuery执行类似的操作来解析原始数据绑定属性:
OtherViewModel: {
the_logic: function() {
// We have the element already
var element = [already set to a DOM node]
// Get the view-model bound to the element
var bound_vm = ko.dataFor(element)
// Parse the original binding attribute on the element
$($(element).attr("data-bind").split(",")).each(
function(idx, binding) {
var parts = binding.split(":")
binding_info[parts[0].trim()] = parts[1].trim()
}
)
// Now binding_info should hold what you want. EG we can set whatever
// the options binding is bound to like this:
bound_vm[binding_info[options]]([1,2,3)
}
}
我建议你用这个。您可以使用
jqueryunobtrusiveplugin
在javascript端处理它
为此,可以创建一个对象
var binding = {
options: 'tickets',
optionsCaption: "'Choose...'",
optionsText: "'name'",
value: 'chosenTicket'
}
像这样使用它
{
options:selectOptions,
value:selectedValue
}
$('#tickets').dataBind(binding);
而不是这个
<select
data-bind="
options: tickets,
optionsCaption: 'Choose...',
optionsText: 'name',
value: chosenTicket
"
></select>
这样,就可以重用
绑定
对象,并且代码将非常干净。确保在应用绑定之前调用它您的目标非常不明确。你能解释一下吗?如果你想这样做,这通常是一个指标,表明你没有这样做way@raheelshan我需要访问绑定到元素的bindingContext观察值。@KongaRaju您能解释一下您的目标,而不是试图将其简化为您认为需要做的事情吗?您可能不需要执行您的要求,因为它打破了标准的敲除模式。@xdumaine请查看更新的问题如何知道viewmodel中的特定可观察名称?很有趣。我不确定我是否知道如何做到这一点,但您可以使用jQuery进行黑客攻击。更新即将到来。更好的方式,但我正在寻找一种方式做。