0

这是 IE8 崩溃时的错误信息。

Unhandled exception at 0x05A99E34 (mshtml.dll) in iexplore.exe: 0xC0000005: Access violation reading location 0x0000003C.

以下作品。

<tbody data-bind="foreach: searchResults">
    <tr><td data-bind="text: orgName"></td></tr>
</tbody>

但在 IE8 上出现以下崩溃(适用于 IE10、FF 和 Chrome)。

orgName只是在vm.searchStakeholder.

这是有关视​​图模型的更多信息。

var Stakeholder = (function () {
    function Stakeholder(orgName) {
        this.orgName = ko.observable(orgName);
    };
    return Stakeholder;
})();

var vm = new function () {
    var self = this;
    self.searchResults = ko.observableArray();

    self.searchStakeholder = function (){
        $.ajax({
             type:'get',
             dataType: 'json',
             url: 'the-url',
             contentType: 'application/json',
             success: function(json){
                 for(var i = 0; i < json.SearchResults.length; i++) {
                     var x = json.SearchResults[i];
                     self.searchResults.push(new Stakeholder(x.orgName));
                 }
             }
        });            
    };

});


ko.applyBindings(vm, $('#divMyApp')[0]);
4

1 回答 1

0

假设您得到一些 Stakeholder 类型的结果并将它们存储在 searchResults -

<table data-bind="with: searchResults">
    <th><tr>
        <td>Name</td>
        <td>Org Name</td>
    </tr></th>
    <tr data-bind="foreach: stakeholder">
        <td data-bind="text: name"></td>
        <td>
            <input type="text" data-bind="value: orgName" />
        </td>
    </tr>
</table>

在 IE8 中工作。但是由于您的 searchResults 是一个 KO.observableArray() 我假设您需要 foreach 您的 searchResults,但是如果没有更好地了解您在做什么,就很难说清楚,无论如何。

<table>
    <th><tr>
        <td>Name</td>
        <td>Org Name</td>
    </tr></th>
    <tr data-bind="foreach: searchResults">
        <td data-bind="text: name"></td>
        <td>
            <input type="text" data-bind="value: orgName" />
        </td>
    </tr>
</table>

我也不知道 orgName 是什么或它是如何传递给利益相关者的构造函数的,如果它是一个 KO.observable 则将其作为参数删除并使用 orgName(),如果它是传入的参数则将其移至父函数并重命名以确保它不是循环引用。

var Stakeholder = (function (organizationName) {
    var self = this;
    function Stakeholder() {
        this.orgName = ko.observable(self.organizationName);
    };
    return Stakeholder;
})();

最后,不确定底部的“blah”元素是什么,也许只是复制意大利面的错字?

于 2013-06-10T23:33:47.610 回答