当我尝试使用jQuery
选择元素时,为什么此元素未定义:
<ul data-bind="attr: {id: panelId}"></ul>
panelId
被定义为Knockoutjs
ViewModel:
var VM = function () {
var self = this,
date = new Date();
self.panelId = "panel-" + date.getTime();
$("#"+self.panelId).doSomthing(); // element is undefined
}
在Chrome开发者工具中检查该页面,我可以看到ID被分配如此
<ul data-bind ... id="panel-1368039734501"</ul>
panelId
属性不一定是observable
。但我试图让它可观察但结果相同。
任何?
答案 0 :(得分:1)
问题是ID属性仅应用于ko.applyBindings
调用,但您尝试在此之前按ID查找元素。
为避免这种情况,请执行以下操作:
var VM = function () {
var self = this,
date = new Date();
self.panelId = "panel-" + date.getTime();
}
var vm = new VM();
ko.applyBindings(vm); // Adds the ID attribute
$("#"+vm.panelId).doSomething(); // This needs to be after ko.applyBindings