0

編集:自分自身に答えました。エラーは古いバージョンのノックアウトが原因であり、常に最新バージョンを使用し、既存のものを確認してください!

私はノックアウトのチュートリアルに従っていて、自分で何かをしようとしましたが、基本的に同じコードを持っている場合でもエラーが発生します。

<ul data-bind="foreach: tasks">
<li>
    <input data-bind="value: title" />
</li>
</ul>

   <script type="text/javascript">
        (function () {
            function Task(data) {
                this.title = ko.observable(data.contentName);
            }

            function TaskListViewModel() {
                // Data
                var self = this;
                self.tasks = ko.observableArray([]);

                // Load initial state from server, convert it to Task instances, then populate self.tasks
                $.getJSON('<%= Url.Action("GetContentList", "TranslateContentMenu") %>',
                    {
                        languageId: $('#LanguageIdNameValuePairs').val()
                    },  function (allData) {
                    var mappedTasks = $.map(allData, function (item) { return new Task(item) });
                    self.tasks(mappedTasks);
                });
            }

            var test = new TaskListViewModel();
            console.log(test);
            ko.applyBindings(new TaskListViewModel());
        }())
</script>

私が呼び出しているサービスは、次の結果を返します: [{"contentId":"1b07790c","contentName":"test"},{"contentId":"1b07790c","contentName":"test"},{"contentId ":"1b07790c","contentName":"test"}]

そして、これはfirebugコンソールから直接出たエラーです:エラー:バインディング属性を解析できません。メッセージ: ReferenceError: タイトルが定義されていません。属性値: 値: タイトル

4

3 に答える 3

1

私が得たエラーは、ノックアウト 1.2.1 を使用していたためでした。今日の最新バージョンは 2.1.0 で、ノックアウトをアップグレードすると機能しました。

于 2012-10-24T13:04:49.313 に答える
1

この時点ではtasks配列は空で、ノックアウトは<li>タグを生成しないため、このようなエラーは発生しません。このようなものを使用して、または使用せずにtasks配列を初期化していることを確認してください。[]nothing[""]

Taskまた、空のオブジェクトでタスクを初期化することもできます:

self.tasks = ko.observableArray(new Task());
于 2012-10-24T13:01:52.910 に答える
0

@Artem がコメントで指摘したように、これは彼が構築した jsFiddle で機能します。私がこれを解決できる唯一のことは、あなたの不適切な形式の HTML です。あなたが書いた:

<ul data-bind="foreach: tasks">
<li>
    <input data-bind="value: title" />
</li>

Knockout は、不適切な形式の HTML を好みません。試してみてください:

<ul data-bind="foreach: tasks">
<li>
    <input data-bind="value: title" />
</li>
</ul>
于 2012-10-24T11:43:46.723 に答える