Javascript 使用typescript/knockout的JQuery对话框未打开
我使用knockout和typescript打开一个基于条件的对话框。if语句可以工作,但不能使用下面的代码切换对话框。任何帮助都将不胜感激 打字稿:Javascript 使用typescript/knockout的JQuery对话框未打开,javascript,jquery,typescript,knockout.js,Javascript,Jquery,Typescript,Knockout.js,我使用knockout和typescript打开一个基于条件的对话框。if语句可以工作,但不能使用下面的代码切换对话框。任何帮助都将不胜感激 打字稿: class SearchMTRModel { mtrWarnElement: JQuery; allowDuplicates : KnockoutObservable<boolean>; } 用于打开对话框的函数: export function addPDFToPackage(heat: MTRHeat):
class SearchMTRModel {
mtrWarnElement: JQuery;
allowDuplicates : KnockoutObservable<boolean>;
}
用于打开对话框的函数:
export function addPDFToPackage(heat: MTRHeat): void {
var koHeat: MTRHeatWithInclude = ko.mapping.fromJS(heat);
koHeat.Include = ko.observable(true);
var mtrID = koHeat.MTR.MTRID();
var mtrIDs = [];
var addToHeats = () => model.mtrPackage.Heats.push(koHeat);
var arrayOfHeats = model.mtrPackage.Heats();
for (var i = 0; i < arrayOfHeats.length; i++) {
mtrIDs.push(arrayOfHeats[i].MTRID());
}
var idx = mtrIDs.indexOf(mtrID);
if (idx >= 0) {
//the code gets here but dialog doesn't open.
model.mtrWarnElement.dialog('open');
}
else if (idx === -1 || model.allowDuplicates()) {
addHeatToPackage(model.mtrPackage.PackageID(), heat.HeatID).done(addToHeats);
}
}
}
导出函数addPDFToPackage(热量:MTRHeat):无效{
var koHeat:MTRHeatWithInclude=ko.mapping.fromJS(heat);
koHeat.Include=ko.可观察(真);
var mtrID=koHeat.MTR.mtrID();
var mtrIDs=[];
var addToHeats=()=>model.mtrPackage.Heats.push(koHeat);
var arrayOfHeats=model.mtrPackage.Heats();
对于(变量i=0;i=0){
//代码到达这里,但对话框没有打开。
model.mtrWarneElement.dialog('open');
}
else if(idx==-1 | | model.allowDuplicates()){
addHeatToPackage(model.mtrPackage.PackageID(),heat.HeatID).done(addToHeats);
}
}
}
HTML
列出的代码非常不清楚,因为应该打开jQuery对话框的代码似乎是由对话框内的确认按钮触发的。 除此之外,您的HTML代码中似乎还有一个对话框BindingHandler,这里没有列出
我过去使用的方法如下 在组件ViewModel中添加属性,该属性指示是否应显示该对话框
public showModal: KnockoutObservable<boolean> = ko.observable(false);
在模板中,将ViewModel中的公共属性交给BindingHandler,类似于:
<div data-bind="dialog: { dialogVisible: showModal }"></div>
在HTML中,自定义绑定的作用是什么?data bind=“dialog:{autoOpen:false,model:true}”。看起来您正在初始化中手动调用.dialog(),所以我不确定您为什么需要两者。
public showModal: KnockoutObservable<boolean> = ko.observable(false);
ko.bindingHandlers.modal = ...
<div data-bind="dialog: { dialogVisible: showModal }"></div>
this.showModal(true);