6

このノックアウト 2.1 バインディング式は Firefox と IE9 では問題なく動作しますが、IE9 互換モードではエラー " Expected identifier, string or number "でクラッシュします。

<div data-bind="template: {
    if: myDataModel, 
    data: myDataModel, 
    afterRender: setup(myDataModel) }">

デバッガーの下に実際の場所が見つかりました。これは次のコード行です (knockout-2.1.0.debug.js):

return new Function("sc", functionBody)

functionBody上記の式と等しい文字列です。スペースと改行文字をいじってみました - 何も役に立たず、同じ結果: IE9 互換モード以外のブラウザーで期待どおりに動作します

助言がありますか?

4

1 に答える 1

12

問題は、古いバージョンの IE が「if」または同様の予約語をプロパティ名として表示することを好まないことだと思います。プロパティ名を一重引用符で囲んでみてください。

<div data-bind="template: {
'if': myDataModel, 
data: myDataModel, 
afterRender: setup(myDataModel) }">

「クラス」バインディングがあるときに、これが発生するもう1つの一般的な時間です。同じ修正:

<tr data-bind="attr: { 'class': packageSelected() ? 'success' : '' }">

JS の予約語のリスト: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words

于 2012-10-26T16:25:49.523 に答える