TypeScript-使用knockout.js的JavaScript在IE8中不起作用;对象没有';“不支持此属性或方法”;
我知道这在IE8中给了我一个错误,但在Chrome和PhantomJS中没有问题 错误是“对象不支持此属性或方法knockout-2.2.1.debug.js,第2319行字符35”,这是从TypeScript-使用knockout.js的JavaScript在IE8中不起作用;对象没有';“不支持此属性或方法”;,javascript,knockout.js,runtime-error,typescript,Javascript,Knockout.js,Runtime Error,Typescript,我知道这在IE8中给了我一个错误,但在Chrome和PhantomJS中没有问题 错误是“对象不支持此属性或方法knockout-2.2.1.debug.js,第2319行字符35”,这是从currentPage(pages[pages.indexOf(current)+steps])调用的 我不知道为什么它不起作用,所以任何帮助都将不胜感激 var Page = (function () { function Page(index, name, canNavigateToPage, n
currentPage(pages[pages.indexOf(current)+steps])调用的代码>
我不知道为什么它不起作用,所以任何帮助都将不胜感激
var Page = (function () {
function Page(index, name, canNavigateToPage, navigatedToThisPage) {
this.index = index;
this.name = name;
this.canNavigateToPage = canNavigateToPage;
this.navigatedToThisPage = navigatedToThisPage;
}
Page.prototype.navigateToPage = function () {
if (this.canNavigateToPage()) {
this.navigatedToThisPage(this);
}
};
return Page;
})();
var AccountSearchParameters = (function () {
function AccountSearchParameters() {
this.reference = ko.observable();
this.scheme = ko.observable();
this.lastName = ko.observable();
this.sufficientInputToSearchForAccount = ko.computed(function () {
return this.reference() && this.scheme() && this.lastName();
}, this);
}
return AccountSearchParameters;
})();
function viewModel() {
var self = this,
currentPage = ko.observable(),
accountSearchParameters = new AccountSearchParameters(),
forwardPageProgressionGuards = {
'1': function canMoveToPage2() {
return accountSearchParameters.sufficientInputToSearchForAccount();
},
'2': function canMoveToPage3() {
return true;
},
'3': function canMoveToPage4() {
return true;
}
},
canMoveToNextPage = function (currentlyOnPage) {
function disallowPageMovementNotExplicitlyDefined() {
return false;
}
return (forwardPageProgressionGuards[currentlyOnPage] || disallowPageMovementNotExplicitlyDefined)();
},
canMoveToPreviousPage = function (currentlyOnPage) {
return currentlyOnPage > 1;
},
pages = [
new Page(1, 'Customer details', function () {
return true;
}, function (page) {
currentPage(page);
}),
new Page(2, 'Bank details', forwardPageProgressionGuards['1'], currentPage),
new Page(3, 'Payment details', forwardPageProgressionGuards['2'], currentPage),
new Page(4, 'Confirmation', function () {
return true;
}, currentPage)],
pageNavigator = function (canNavigate, steps) {
current = currentPage();
console.log(canNavigate(current.index));
if (canNavigate(current.index)) {
currentPage(pages[pages.indexOf(current) + steps]);
}
};
currentPage(pages[0]);
self.page = ko.computed(function () {
return currentPage();
});
self.accountSearchParameters = accountSearchParameters;
self.nextPage = function () {
pageNavigator(canMoveToNextPage, 1);
};
self.previousPage = function () {
pageNavigator(canMoveToPreviousPage, -1);
};
self.canMoveToNext = ko.computed(function () {
return canMoveToNextPage(currentPage().index);
});
return self;
}
$(function () {
ko.applyBindings(viewModel());
});
IE8中的indexOf不受支持,请使用duuuummmmb!我在使用TypeScript时假设他们(微软)的所有操作都会受到他们自己糟糕的浏览器的支持。谢谢你,也感谢上帝让我们进行单元测试。尼克:我想连微软都认识到IE8很糟糕。他们只关注当前的浏览器支持,所以这并不奇怪。也就是说,您使用了indexOf,它是JavaScript:TypeScript不会导致或修复这样的问题。不,它不会导致这样的问题,但它会在界面上显示这样的问题,这使得无论浏览器如何,它看起来都是可用的。我不知道是否可以根据您支持的最小浏览器选择默认的TypeScript定义文件。