1
我使用敲除和打字稿打开基于条件的对话框。 if语句有效,但对话框不会使用下面的代码进行切换。任何帮助将不胜感激。使用打字稿/敲除不打开的JQuery对话框
打字稿:
class SearchMTRModel {
mtrWarnElement: JQuery;
allowDuplicates : KnockoutObservable<boolean>;
}
初始化函数:
var model = new SearchMTRModel(); $(() => { ko.applyBindings(model); search(); model.mtrWarnElement = $('#mtrWarnDialog').dialog({ autoOpen: false, modal: true, title: 'Duplicate MTR detected.', buttons: { 'Cancel':() => { model.allowDuplicates = ko.observable(false); model.mtrWarnElement.dialog('close'); }, 'Confirm':() => { var heats = new MTRHeat(); model.allowDuplicates = ko.observable(true); addPDFToPackage(heats); model.mtrWarnElement.dialog('close'); } }, close:() => { model.allowDuplicates(false); model.allowDuplicates = ko.observable(false); model.mtrWarnElement.dialog('close'); } }); });
是应该打开对话框的功能:
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);
}
}
}
HTML
<div id="mtrWarnDialog" data-bind="dialog: { autoOpen: false, modal: true}">
</div>
在你的HTML中,你的自定义绑定是做什么的? data-bind =“对话框:{autoOpen:false,model:true}”。它看起来像你在初始化手动调用.dialog(),所以我不知道你为什么需要这两个。 –