3 votes

KnockoutJS `with` binding et IE8

Pour une raison quelconque, mon code génère l'erreur ci-dessous dans IE8, mais pas dans les autres navigateurs.

SCRIPT5022: Unable to parse bindings.
Message: TypeError: 'logoSrc' is undefined;
Bindings value: 'attr': { 'src': logoSrc } 

J'ai confirmé que la propriété logoSrc est bien définie, même dans IE8, juste avant la liaison, mais l'opération échoue toujours. Et le fait de désactiver la liaison avec logoSrc ne fait qu'entraîner l'échec de la liaison suivante.

Le code html se trouve ci-dessous. Je sais que j'ai déjà utilisé une liaison with, donc je suis presque sûr que ce n'est pas le problème, et le html semble être correctement fermé.

<div data-bind="visible: mode() === 'print'" class="container-fluid">
    <!-- ko with: printVm -->
    <div class="row-fluid">
        <div class="span12">
            <div class="page-header">
                <div class="pull-right" style="width:140px;height:60px;overflow:hidden;">
                    <img data-bind="'attr': { 'src': logoSrc }" src="" />
                </div>
                <h2>Invoice Statement - <span data-bind="text: itemZeroClientName"></span></h2>
            </div>
            <strong>Invoice number:</strong> <span data-bind="text: invoiceId"></span>
            <strong>Invoice date:</strong> <span data-bind="text: userInfo().invoiceDateDisplay"></span>
            <strong>Client number:</strong> <span data-bind="text: itemZeroClientId">22365</span>
            <hr />
        </div>
    </div>
    <div class="row-fluid">
        <div class="span6 cr-tablet6 cr-phone6">
            <h4>Billed by <span data-bind="text: companyNameDisplay"></span></h4>
            <span data-bind="html: companyInfo"></span>
        </div>
        <div class="span6 cr-tablet6 cr-phone6">
            <h4>Billed to</h4>
            <span data-bind="html: clientInfoDisplay"></span>
        </div>
    </div>

    <div class="row-fluid">
        <div class="span12">
            <hr />
            <table id="printInvoiceTable" class="table">
                <thead>
                <tr>
                    <th class="date">Date</th>
                    <th class="name">Provider</th>
                    <th class="code">Proc Code</th>
                    <th class="location">Location</th>
                    <th class="time">Hours</th>
                    <th class="units">Units</th>
                    <th class="charge">Charges</th>
                </tr>
                </thead>
                <tbody data-bind="foreach: items">
                    <tr>
                        <td data-bind="text: dateDisplay"></td>
                        <td data-bind="text: orgName"></td>
                        <td data-bind="text: procedureCodeString"></td>
                        <td data-bind="text: location"></td>
                        <td class="formatted-number" data-bind="text: timeWorkedHrs"></td>
                        <td class="formatted-number" data-bind="text: (unitsOfService() || 0).toFixed(2)"></td>
                        <td class="formatted-currency" data-bind="text: (clientCharges() || 0).toFixed(2)"></td>
                    </tr>
                </tbody>
                <tfoot>
                    <tr>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td class="formatted-number" data-bind="text: totalWorkedHours"></td>
                        <td class="formatted-number" data-bind="text: totalUnitsOfService"></td>
                        <td class="formatted-currency" data-bind="text: totalClientRate"></td>
                    </tr>
                </tfoot>
            </table>
        </div>
    </div>
    <!-- /ko -->
</div>

2voto

Grim Points 1568

Comme suggéré plus haut, il semble que le problème vienne d'IE8 qui supprime les commentaires (et donc les liaisons virtuelles dans certaines conditions) et qui a été rapporté sur les forums d'élimination directe

0voto

segFault Points 528

J'ai eu des problèmes en utilisant avec et jquery file upload dans IE8. J'ai également eu des problèmes avec les commentaires et j'ai pu les résoudre en échappant la condition de commentaire. La page web de knockout mentionne cet avertissement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X