2013-08-02 3 views
0

Я хочу просто, но я не знаю, возможно ли это.Kendo шаблон отправить данные

У меня есть кендо Mobile ListView, как показано ниже:

e.view.element.find("#list-serviceorders").kendoMobileListView({ 
    dataSource: ds, 
    pullToRefresh: true, 
    template: $("#list-serviceorders-template").html() 
}); 

И я хочу, чтобы отправить в шаблон некоторые значения для доступа на него. Мой вид с шаблоном заключается в следующем:

<div data-role="view" data-before-show="GAPCP.viewBeforeShow" id="serviceorders" data-layout="main-item-list"> 
    <ul id="list-serviceorders"></ul> 
</div> 

<script id="list-serviceorders-template" type="text/x-kendo-template" data-teste="teste"> 
    <a href="views/entries.html?id=#: CodOs #">OS: #: CodOs #<br /> 
    #: parameter.Divi1 #: #: CodDivi1 #/#: parameter.Divi2 #: #: CodDivi2 #</a> 
</script> 

Где вы можете прочитать parameter.Divi1 и parameter.Divi2 те места, где я хочу, чтобы отобразить эти значения. Они не находятся в источнике данных, как другие значения.

Я не хочу создавать глобальную переменную, потому что я не хочу связываться с моим кодом, и я не могу использовать функцию для этой цели, потому что эти значения поступают из базы данных и будут выполнять запрос для каждая итерация элемента списка.

Любое предложение о том, как это сделать?

+0

Либо находится в модели, либо является глобальным. Я думаю, что вопрос заключается в том, что вы можете иметь его в модели, не имея при этом списка значений, полученных с помощью DataSource. Это достаточно хорошо? Вы понимаете, что я имею в виду? – OnaBai

+0

@OnaBai Да, я понял. Но могу ли я получить его в контроллере вместо модели? Поэтому, если да, и если я могу отправить его в шаблон, я разрешу свою проблему. – DontVoteMeDown

ответ

3

Что я предлагаю добавить эту информацию в модель контроллера. Вы можете сделать это в DataSource.schema.parse или в requestEnd, даже в случае dataBound, если виджет принимает его.

Когда данные получены, вы перебираете модель и заполняете оставшиеся данные, не полученные с сервера.

Пример: Использование parse

var ds = new kendo.data.DataSource({ 
    transport: { 
     read: { 
      url : ... 
     } 
    }, 
    schema : { 
     model: { 
      CodOs : { type: "number" }, 
      CodDivi1: { type: "string" }, 
      CodDivi2: { type: "string" } 
     }, 
     parse: function (data) { 
      $.each(data, function (idx, elem) { 
       // Extend original elem 
       elem.parameter = { 
        Divi1: elem.CodDivi1.toUpperCase(), 
        Divi2: elem.CodDivi2.toLowerCase() 
       } 
      }); 
      return data; 
     } 
    } 
}); 

Где вычислить parameter внутри функции parse и установить parameter.Divi1 к CodDivi1 в верхнем регистре и parameter.Divi2 к CodDivi2 в нижнем регистре.

+0

Если с помощью этого метода шаблон получает 'CodOs, CodDivi1, CodDivi2, Divi1 и Divi2' (где будут обрабатываться Divi1 и Divi2), ваш ответ удовлетворит вопрос. Я смогу проверить его в понедельник, а затем опубликую результат. Большое спасибо! – DontVoteMeDown

+0

Ницца! Это сработало! И вам не нужно передавать этот объект модели. Содержимое dataSource также доступно, я должен использовать '#: parameter.Divi1 #' в представлении. Спасибо! – DontVoteMeDown

Смежные вопросы