Проблема с простым примером jQuery Templates - PullRequest
2 голосов
/ 25 января 2011

Я использую jquery-tmpl и получаю следующие JSON данные, которые я использую для проверки формы в ASP.NET MVC3:

{"Status":1,"Message":"Oh dear, what have you done. Check the list of errors dude!","Errors":["The Contents field is required.","The Date Created field is required.","The Date Updated field is required.","The Updated By field is required."]}

Мой шаблон выглядит так:

<script id="ResponseTemplate" type="text/x-jquery-tmpl">
{{each(i, error) Errors}}
    <li>${error}</li>
{{/each}}
</script>

Мой JSON POST выглядит следующим образом:

var data = {
    Contents: "This is a test",
    DateCreated: "",
    DateUpdated: "",
    UpdatedBy: "Ben"
};

$.ajax({
    url: '@Url.Action("save", "note")',
    data: JSON.stringify(data),
    type: 'POST',
    contentType: 'application/json',
    dataType: 'json',
    success: function (result) {
        alert(result.Errors);
        $("#Responses").tmpl(result).appendTo("#ResponseTemplate")
    }
});

Данные верны. Предупреждение показывает массив ошибок в виде строки. Шаблон просто не работает.

Ответ должен быть простым.

1 Ответ

2 голосов
/ 26 января 2011

Я думаю, вы просто перепутали Responses и ResponseTemplate:

$("#ResponseTemplate").tmpl(result).appendTo("#Responses");

Вот ваш пример (без вызовов AJAX): http://jsfiddle.net/andrewwhitaker/GcqZX/

Вы также можете написатьВаш шаблон выглядит так:

<script id="ResponseTemplate" type="text/x-jquery-tmpl">
    <li>${$data}</li>
</script>

И назовите его так:

$("#ResponseTemplate").tmpl(result.Errors).appendTo("#Responses");

(Не уверен, что это на самом деле лучше, но просто хотел отметить, что у вас нетиспользовать {{each}} в этом случае).

...