Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript-使用knockout.js的JavaScript在IE8中不起作用;对象没有';“不支持此属性或方法”;_Javascript_Knockout.js_Runtime Error_Typescript - Fatal编程技术网

TypeScript-使用knockout.js的JavaScript在IE8中不起作用;对象没有';“不支持此属性或方法”;

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

我知道这在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, 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定义文件。