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(),所以我不知道你爲什麼需要這兩個。 –