Как указать собственный шаблон рендеринга для опций в теге {{selectmenu}}

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

Аналогично этому https://jqueryui.com/selectmenu/#custom_render

это поддерживается в реализации тега jsviews?

Большое спасибо.


person Community    schedule 30.11.2018    source источник


Ответы (1)


Вероятно, существуют и другие подходы, в том числе создание собственного пользовательского тега без использования пользовательского интерфейса jQuery или создание производной версии элемента управления тегом {{selectmenu}} здесь, {{myselectmenu}} (используя baseTag).

Но вот краткое предложение одного из способов сделать это:

{^{selectmenu person name="person" onBind=~onbind}}
  {^{for people}}
    <option data-style="{{:style}}" value="{{:id}}">{{:name}}</option>
  {{/for}}
{{/selectmenu}}

Данные:

people: [
  {name: "John Resig", id: "1", style: "background-image: url(...);"},
  ...

Код:

pageTmpl.link("#page", model, {
  onbind: function(val) {
    // override onBind for this tag control instance
    this.baseApply(arguments);

    // override _renderItem for this widget instance:
    this.widget._renderItem = function( ul, item ) {
        var li = $( "<li>" ),
          wrapper = $( "<div>", { text: item.label } );

        if ( item.disabled ) {
          li.addClass( "ui-state-disabled" );
        }

        $( "<span>", {
          style: item.element.attr( "data-style" ),
          "class": "ui-icon " + item.element.attr( "data-class" )
        })
          .appendTo( wrapper );

        return li.append( wrapper ).appendTo( ul );
      };
    }
});
person BorisMoore    schedule 30.11.2018
comment
Спасибо, в итоге я согласился с вашим быстрым предложением, которое сработало хорошо. - person ; 02.12.2018