2016-10-12 6 views
0

Я пытался следовать этому руководству:.. http://developers-club.com/posts/256505/

Я просто не могу понять, почему $$ («MyList») обновить() не работает ? Является полным новичком в webix и могу использовать некоторую помощь, пожалуйста.

мой код здесь: http://sahanaya.net/webix/webix2.html

{view:"tree", id:"myTree", data:recordsData, select: oceanData, on: { 
    onSelectChange: function(){ 
     selected = $$("myTree").getSelectedId(); 
      if (isNaN(selected)) { 
       $$("myList").clearAll(); 
       $$("myList").define("data", selected); 
       $$("myList").refresh(); <-- THIS DOES NOT WORK ?? 
       coverPath = "imgs/" + selected + ".jpg" 
       $$("myCover").define("data", { src: coverPath }); 
      } 
    } 
} 

ответ

1

define("data", /**/) не будет работать. Для data loading (docs) есть еще один метод, parse()

Кроме того, некоторые улучшения будут полезен ИМХО

  • в дереве конфигурации, select является Логическим свойством (и да, есть одноименный метод);
  • будет полезно проверить уровень элемента, чтобы избежать ненужной перегрузки
  • ваша selected переменная является строкой, и если вы хотите использовать соответствующую переменную, проверьте детали at this topic.
  • , если вы хотите изменить данные шаблона, лучше сделать это напрямую, а затем использовать refresh()
  • установить первоначальный выбор, есть ready обработчик, чтобы поймать момент, когда дерево инициализируется

Вот конфигурация дерева, которую я предлагаю:

{ 
     view:"tree", 
     id:"myTree", 
     data:recordsData, 
     select: true, // boolean property. 
     on: { 
     onSelectChange: function(){    
      selected = $$("myTree").getSelectedId();    
      if (isNaN(selected)) {    
      var selectedItem = $$("myTree").getItem(selected);       
      if (selectedItem.$level == 2){ // checks whether it's the 'album' level 
       $$("myList").clearAll(); 
       $$("myList").parse(window[selected]); // instead of `define`+`refresh` 
       // note that string ID isn't the variable name, but window[selected] can handle the global variable 
       coverPath = "imgs/" + selected + ".jpg"; 
       // but `refresh` is required for ui.template: 
       $$("myCover").data.title = coverPath; 
       $$("myCover").refresh(); 
      } 
      } 
     }    
     }, 
     ready:function(){ 
     this.open("1"); 
     this.select("oceanData") // therefore, initial var selected can be an empty array 
     } 
    } 
+0

Спасибо Loji, как я сказал, всего новичков здесь. Позвольте мне попытаться «понять» то, что вы объяснили первым, а затем вернется с большим количеством вопросов :-) –

+0

Добро пожаловать! Собственно, эта статья странная (или просто устаревшая). Насколько я знаю Webix, определение данных не должно работать вообще – Loj

+0

Эй, Лой, я проверил ваш код, и он работает, поэтому я принимаю это как правильный ответ. Я еще не полностью понял все, но я очень впечатлен тем, что сделали веб-мастера, и у них также есть версия GPL. Если у вас есть какие-либо учебники, пожалуйста, пришлите мне несколько ссылок. Большое спасибо еще раз. –

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

  • Нет связанных вопросов^_^