6
votes

Knockout calculé donne la fonction Erreur attendue dans IE uniquement

Je reçois un "script5002: fonction attendue" qui ne se produit qu'à IE. Je teste actuellement contre la version 9. Cela arrive lorsque j'utilise un calculable précédemment défini observable à l'intérieur d'un autre calculable observable.

Mon application est un peu plus complexe que cela, donc j'ai reproduit l'erreur avec le code beaucoup plus simple. au dessous de. L'erreur se produit sur la ligne z = self.subtotal (); code> lorsque vous entrez un numéro dans le numéro 1, numéro 2 et numéro 3 (et onglet OUT). P>

Cette erreur ne se produit pas dans Chrome ou Firefox et j'ai googlé depuis un certain temps. J'espère que quelqu'un peut aider à m'engager. P>

Voici le lien vers le jsfiddle: http://jsfiddle.net/kcmtg / p>

Voici le JavaScript: P>

    <h4>Calc 1</h4>
<label for="Number1">Number 1: </label><input id="Number1" type="text" data-bind="value: number1" />
<label for="Number2">Number 2: </label><input id="Number2" type="text" data-bind="value: number2" />
<label for="Subtotal"><b>Subtotal: </b></label><input id="Subtotal" type="text" data-bind="value: subtotal" readonly="readonly" />
<hr />
<h4>Calc 2</h4>
<label for="Number3">Number 3: </label><input id="Number3" type="text" data-bind="value: number3" />
<label for="Number4">Number 4: </label><input id="Number4" type="text" data-bind="value: number4" />
<label for="Total"><b>Total:</b> </label><input id="Total" type="text" readonly="readonly" data-bind="value: total" />


0 commentaires

3 Réponses :


3
votes

Il semble que vous ayez découvert un bogue dans IE ou KnockOutjs, probablement exposé par les liaisons de Knockout, où Knockout pousse une valeur dans un observable, mais dans IE9, il écrase la propriété.

Cela ne se produit pas sur IE10, suggérant que c'est un bogue dans IE9. J'imaginerais que Knockout a quelque chose où il vérifie si une valeur est une fonction observable inscriptible et qu'elle est signalée de manière incorrecte sur IE9.

intéressant, si vous modifiez KO calculée pour utiliser une lecture / écriture, l'erreur cesse. : xxx

peut-être que c'est un travail suffisant?


1 commentaires

Ce travail autour sera absolument bien. Merci beaucoup pour votre aide!



7
votes

Ceci a une cause similaire à celle-ci: Knockout.js calculable observable appelé deux fois dans Internet Explorer et est causé par Le fait que dans IE autocomplete code>. Donc, vous pourriez le réparer comme ceci:

<input id="Subtotal" type="text" data-bind="value: subtotal()" readonly="readonly" />


2 commentaires

Merci d'un peu plus de clarté sur les problèmes et un peu plus succinct. J'avais déjà mis en œuvre la solution de Juda avant de voir cette option et l'avez laissée pour d'autres raisons qui ne sont pas pertinentes pour cette discussion. Je crois que c'est la réponse plus précise cependant.


Eu un problème similaire et a été capable de le réparer en utilisant votre 2e correction, mettant le () sur la valeur dans la référence Data-Bind . Excellent travail de trouver ça.



0
votes

Vérifiez s'il vous plaît voir si votre observable a une valeur transmise sous forme de paramètre ou non. Par exemple, budgetlineviewModel.Total = total (5). J'ai essayé d'utiliser budgetlineviewmodel.total = 5. mais sans succès.

Knockout Observables ne fonctionne que des fonctions en interne et que vous devez transmettre une valeur entre crochets qui renvoient la même valeur.

chrome est indispensable en autorisant le budgetlineviewmodel.total () de tolérer la valeur null quand aucun paramètre n'est passé.

espère que cela aide.

acclamations! xxx


0 commentaires