在Javascript&中访问不同范围内的变量YUI 3

时间:2013-08-01 15:37:21

标签: javascript jquery yui

我是YUI 3和YUI的新手。我正在尝试在类和方法之间传递数据。

在此示例中,我使用 gallery-sm-treeview 插件来构建文件树。有一个名为 TreeView 的类来初始化和渲染树。还有另一个名为 MenuBar 的类,我想通过 TreeView 的getter方法访问一些特定于插件的方法。

但是,YUI()。use()范围内的变量 var treeview 当然无法从外部访问。怎么做?

YUI.add('treetool.TreeView', function(Y) {

  Y.treetool.TreeView = Class.extend({

    init : function(elementId) {

      YUI({
        gallery: 'gallery-2013.06.20-02-07'}).use('gallery-sm-treeview', function (Y) {

          // Create a new TreeView with a few nodes.
          var treeview = new Y.TreeView({

              // Tell the TreeView where to render itself.
              container: elementId,

              // Populate the treeview with some tree nodes. 
              nodes: [
                  {label: 'Node 1'},
                  {label: 'Node 2', children: [
                      {label: 'Child 1'},
              ]
          });

          // Render the treeview inside the #treeview element.
          treeview.render();

        });          
    },  

    getSomeData : function () {

      return treeview.getSelectedNodes();      

    }

  }); 

}, '0.0.1', {
  requires : [ 'jquery' ]
});

YUI.add('treetool.MenuBar', function(Y) {

  Y.treetool.MenuBar = Class.extend({

    init : function(treeObj) {

      var someData = treeObj.getSomeData();

    },  
  });

}, '0.0.1', {
  requires : [ 'jquery' ]
});

1 个答案:

答案 0 :(得分:0)

它可能不是“最佳”方法,但一种方法是在两个地方都可用的范围内定义树视图变量。

YUI.add('treetool.TreeView', function(Y) {
    var treeview;
    //...

treeview = new Y.TreeView({ // removed "var "