最新的敲除和jquery ui对话框出错:无法在初始化之前调用
Error with latest knockout and jquery ui dialog: cannot call prior to initialization
我尝试使用knocket 2.2自定义绑定新的jquery 1.9和jquery ui 1.9.2。代码来自这里:将jquery ui对话框与knockoutjs集成使用更新的库:http://jsfiddle.net/SnPdE/323/
ko.bindingHandlers.dialog = {
init: function(element, valueAccessor, allBindingsAccessor) {
var options = ko.utils.unwrapObservable(valueAccessor()) || {};
//do in a setTimeout, so the applyBindings doesn't bind twice from element being copied and moved to bottom
setTimeout(function() {
options.close = function() {
allBindingsAccessor().dialogVisible(false);
};
$(element).dialog(options);
}, 0);
//handle disposal (not strictly necessary in this scenario)
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).dialog("destroy");
});
},
update: function(element, valueAccessor, allBindingsAccessor) {
var shouldBeOpen = ko.utils.unwrapObservable(allBindingsAccessor().dialogVisible);
$(element).dialog(shouldBeOpen ? "open" : "close");
}
};
var viewModel = {
label: ko.observable('dialog test'),
isOpen: ko.observable(false),
open: function() {
this.isOpen(true);
},
close: function() {
this.isOpen(false);
}
};
ko.applyBindings(viewModel);
问题是错误:错误:无法在初始化之前调用对话框上的方法;尝试调用方法"关闭"
如果我删除setTimeout,那么applyBindings将应用于对话框两次。
在调用open
之前检查对话框是否已初始化将修复它。
if ($(element).data('dialog')) {
$(element).dialog(shouldBeOpen ? "open" : "close");
}
初始update
根本不需要,因为如果默认autoOpen
为true
,则在初始化期间会打开对话框。
编辑:
当dialogVisible
最初为false
时,为了正确起见,应更改设置autoOpen
选项。
...
options.autoOpen = ko.utils.unwrapObservable(allBindingsAccessor().dialogVisible);
$(element).dialog(options);
相关文章:
- 未捕获错误:无法在初始化之前调用方法;
- 正在Ajax调用上初始化主干视图
- 检查对话框是否为 Open 会引发“初始化前无法在对话框上调用方法”错误
- jscrollpane在AJAX调用后不会重新初始化
- 您必须在调用 loginIn 之前初始化 FacebookUtils
- JQUERY对话框未捕获错误:初始化之前无法调用对话框上的方法
- 在指令初始化和加载数据后调用函数
- 如何通过从服务本身调用函数来初始化服务
- JQuery 1.11.2 在初始化之前无法在对话框上调用方法;试图调用方法“销毁”
- 未捕获错误:初始化前无法在对话框上调用方法;尝试调用方法“打开”
- 要求 js 初始化不要被调用
- 在 Knockout 中初始化时调用组件函数
- 如何延迟对 javascript 对象的任何方法的所有调用,直到对象初始化
- “初始化前无法在工具提示上调用方法”错误,当我添加 jquery-ui 库时
- 如何在 ajax 调用后重新初始化 Owl Carousel
- Ember.js - 在车把内初始化的视图中调用方法
- JS闭包——依赖回调的多个日期选择器初始化/调用
- 如何从jQuery中初始化调用Google Map中的函数?
- 如何防止多个对象's初始化调用
- jQuery日期picker未显示,执行初始化调用