Мобильная модель представления Kendo не привязана к <DIV>

I am not sure what is happening but I am not able to bind my view model to any HTML tags. I want to display values of book variable in my span tag of DIV.

This is my js file

(function () {
    var currentAnswer;
    var AnswerDetail;
    var book2 = {question2:"A", answer2:"B"};
     window.AnswerDetail = {
    show: function () {
        //Pull the ISBN number from the query string
        var location = window.location.toString();
        var id = location.substring(location.lastIndexOf('?') + 4);

        // Filter the DataSource bt ISBN to get the selected record
        window.Answers.data.filter({
            field: "id",
            operator: "eq",
            value: id
        });
        currentAnswer = window.Answers.data.view()[0];
        //alert(currentAnswer.question);
        question2 = currentAnswer.question;
        //alert(currentAnswer.answer);
        return(currentAnswer.question);

    },
    hide: function () {
        // When the user navigates away from the page, remove the filter
        window.Answers.data.filter([]);
    }
    ,
    open: function () {
        // When the user navigates away from the page, remove the filter
        question2 = currentAnswer.question;
    }
};
    var book = kendo.observable({
        question2: "Query"
    });
    kendo.bind($(('#bookContent')), book);
}());

This is my HTML file
<div id="AnswerContent2" data-model="book" data-role="view" data-title="Details" data-layout="main" data-show="AnswerDetail.show" data-hide="AnswerDetail.hide" data-reload="true" data-transition="fade">
    <div id="bookContent" data-model="book" data-role="view" >
        <p><span id="q" data-bind="text: question2"></span> </p>
    </div>
</div>    

Функции работают отлично, переменные получают значения. Но я не могу создать viewmodel и назначить для DIV. На самом деле, я сталкиваюсь с этой проблемой, создавая все мои viewmodel и привязываясь к DIV. Пожалуйста, порекомендуйте.

1 ответ

Кажется, здесь много проблем...

Может быть, вы просто забыли включить это в свой код, но где вы создаете мобильное приложение Kendo? Где-то вы должны позвонить:

var app = new kendo.mobile.Application(document.body);

Удалите вложенные представления, так что измените:

<div id="bookContent" data-model="book" data-role="view" >

чтобы:

<div id="bookContent" >

Вы можете удалить это:

kendo.bind($(('#bookContent')), book);

потому что представления уже MVVM связаны с тем, что вы указываете в data-model приписывать. Вы указываете data-model="book" но нет window.book переменная.

Вы, вероятно, хотите сделать book свойство в вашей ViewModel, которое, я полагаю, также не существует в данный момент. Может быть, это должно быть book?

window.book = kendo.observable({
    question2: "Query"
});

Наконец, ваши кодовые наборы question2 в нескольких местах, но это не определенная переменная, поэтому она просачивается в глобальную область видимости.

question2 = currentAnswer.question; // this becomes window.question2

Вы можете включить строгий режим:

(function () {
    "use strict";

который обнаружит эту ошибку:

Uncaught ReferenceError: вопрос2 не определен


Посмотрите, имеет ли смысл этот рабочий пример: http://dojo.telerik.com/OxISo

Другие вопросы по тегам