2

ウィジェットを呼び出そうとすると、エラーが発生します

Uncaught TypeError: Object [object Object] has no method 'koSpreadSheet' 

私のプラグイン

(function ($) {

    //Create spreadsheet app
    $.widget('koSpreadSheet', {
        //Default values for options
        options: {

        },

        //Call Constructor
        _create: function () {
            this._CreateTable();
        },

        //Function to Render Table
        _CreateTable: function () {
            $.each(data.info[0], function (key, value) {
                console.log(data.info[0]);
                if ($.isNumeric(value)) {
                    if (jQuery.inArray(key, Equationlhs) === -1) {
                        html += "<td><input type='text' class='numericData' data-bind='value:" + key + "'></td>";
                        head += "<th class='variableHeading header-row' id= '" + key + "' title='Click to bind Equation'>" + key + "</th>";
                        list += "<li class='ui-state-default'>" + key + "</li>";
                    } else {
                        html += "<td><input type='text' class='numericData' readonly='readonly' data-bind='value:" + key + "'></td>";
                        head += "<th class='variableHeading header-row' id= '" + key + "' title='" + Equationlhs + "'>" + key + " (F)</th>";
                        list += "<li class='ui-state-default'>" + key + " (F)</li>";
                    }

                } else {
                    html += "<td><span data-bind='text:" + key + "'/></td>";
                    head += "<th class='header-row'>" + key + "</th>";
                }
            });

            var checklist = "<input type='checkbox' id='readonlyCheckbox'><span> Check to make fields ReadOnly</span></br>";
            checklist += "<input type='checkbox' id='viewonlyCheckbox'><span> Check for ViewOnly</span></br>";

            $("body").prepend(checklist);
            $("#div1 thead").append(head);
            $("#div1 tbody").append("<tr></tr>");
            $("#div1 tbody tr").append(html);
        }
    });
})(jQuery);

私のHTML

<html>

    <head>
        <script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js"></script>
        <script src="knockout.mapping-latest.js"></script>
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
        <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
        <script src="testPlugin.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {

                var data = {
                    "info": [{
                            "Name": "Noob Here1",
                            "Department": "Language",
                            "Sex": "Male",
                            "Basic_Salary": "300000",
                            "ESI": "58",
                            "Employee_PF": "60.50",
                            "Bonus": "2.60",
                            "Salary": "0",
                            "Tax": "0",
                            "Gross_Salary": "0"
                        }
                    ]
                }
                var EquationData = {
                    'eqn': [{
                            'Salary': 'Basic_Salary - ( ESI * .5 ) - Employee_PF + Bonus',
                            'Tax': '( Salary < 200000) ? 0: (( Salary < 300000) ? (.15* Salary ) : ( Salary * .30))',
                            'Gross_Salary': '( Salary - Tax )'
                        }
                    ]
                }

                EquationData = EquationData["eqn"][0];

                $.each(EquationData, function (lhs, rhs) {
                    Equationlhs.push(lhs);
                })

                $('#div1').koSpreadSheet();  //koSpreadSheet is name of widget

                $(document).tooltip();

            });
        </script>
    </head>

    <body>
        <table id="div1">
            <thead></thead>
            <tbody data-bind="foreach: info"></tbody>
        </table>
    </body>

</html>

この問題を解決する方法

4

1 に答える 1

2

複数のエラーがあります:

  • 最も重要なのは、名前空間を配置することです。現在の状況では、名前の前にcustomを使用しています。したがって、あなたの場合は次のようになります。 $.widget('custom.koSpreadSheet');

現在、名前空間を 1 つだけ使用する必要があるという制限があります。【JQueryを学ぶ】

  • 未定義の変数で終わらないように、初期化プロセスに注意してください。デバッグ中に問題が発生した変数:
    • data
    • Equationlhs
    • html
    • list
    • head

すべてをデフォルト値で初期化し、グローバルに利用できるようにしましたが、初期化プロセスをきめ細かく制御する必要があります。

コードに基づいた実際の例を次に示します。

于 2013-04-26T10:39:11.997 に答える