2017-05-31 92 views
1

到目前爲止,我已經完成了我所需要的非常有限的前端技能的90%,因此我現在需要幫助。從角度變量填充jstree threeview

我使用jstree構建treview,它對靜態數據(else塊中的那個)的工作正常,如下所示。

<script> 
    $(function() { 
     $("#list").jstree({ 
      "core": { 
       "data": function (node, cb) { 
        if (node.id === "#") { 
         cb([{ 
          "text": "Root", 
          "state": {"opened": true}, 
          "children": true 
         }]); 
        } else { 
         // This is the one I am try to populate dynamicaly 
         cb([{"id":"1","text":"Lis 1"},{"id":"2","text":"Lis 2"}]); 
        } 
       } 
      } 
     }); 
    }); 
</script> 

不過,我現在需要填充else塊與動態結果集未來的角度可變vm.list可用{{ vm.list }}在HTML頁面轉儲),所以我該怎麼辦呢?該文檔有一些關於動態人口數據的細節(html,array/json,ajax,lazy loadcallback),但沒有像我需要的。

通過vm作爲回調函數中的第三參數,並將else塊更改爲cb(vm.cat);沒有成功。如果我的前端知識不在最低端,我會想出更好的嘗試!

我的角度控制器的樣子:

'use strict'; 

module.exports = ['$on', '$timeout', 'listService', 
    function($on, $timeout, listService) { 
     var vm = this; 
     .... 
     load(); 
     .... 

     function load() { 
      // This is actually coming from an API and massive 
      vm.cat = [{'id':'1', 'text':'Lis 1'}, {'id':'2', 'text':'Lis 2'}]; 
     }; 
    } 
]; 

回答

0

我有一個有效的解決方案,但不喜歡它,所以我就等着有人用更好的解決辦法,否則我會遺憾地接受這個,因爲它轉儲到內容一個DOM元素並讀取它的內容來創建樹,在我看來這有點冒險和沉重。

<div id="data" style="display: none">{{ vm.cat }}</div> 


$(function() { 
    var data = $('#data').text(); 
    if (data) { 
     $("#list").jstree({ 
      "core": { 
       "data": JSON.parse(data) 
      } 
     }); 
    } 
});