是否可以动态创建ng-grid?

时间:2014-03-31 06:48:43

标签: javascript angularjs ng-grid

作为我的一个Web项目的一部分,我需要在同一个应用程序中使用多个ng-grid实例,用户可以根据需要动态创建尽可能多的网格(想想通常"添加新网格..& #34;)按钮。 我已经浏览了文档并实现了原型,但我发现网格的设置包含了包含数据的变量的硬编码名称,例如:

角度.js控制器中的

$scope.gridOptions = { data: 'myData' };

并在html中:

<div class="gridStyle" ng-grid="gridOptions">

我尝试使用变量,例如:

var mychart = [{...}, {...}];   // data rows
$scope.gridOptions = { data: $scope.mychart };

<div class="gridStyle" ng-grid="{{gridOptions}}">

但没有成功。我在网上找到的所有例子都只使用一个表格,所以我的问题仍未得到答复。 知道如何解决这个问题或者是这个网格系统的主要限制吗? 谢谢!

2 个答案:

答案 0 :(得分:4)

像往常一样,当你发现自己需要任意数量的对象时,你应该考虑将它们放在一个集合中,而不是给它们个人命名。我已经更新了Wayne的jsfiddle来使用数组和ng-repeat:http://jsfiddle.net/Th47J/

为每个选项创建一个网格:

<div ng-repeat="option in gridOptions" class="gridStyle" ng-grid="option"></div>

显然,如果这些是动态创建的,那么您需要以编程方式更新gridOptions数组,而不是将所有内容都硬编码。但是,如果数据源是唯一正在改变的东西,那就很容易了。

答案 1 :(得分:1)

好吧,我终于成功了。关键是数据引用(本例中为myData [])可以动态生成(例如myData +'['+ myData.length +']'),每次添加新选项卡时。 当然,您可以在选项卡和myData长度之间保持同步。

HTML:

<div id="myTabContent" class="tab-content">
    <div class="tab-pane" ng-repeat="tab in tabs" id="{{tab.id}}">
        <div class="gridStyle" ng-grid="{{tab.ref}}"></div>
    </div>
</div>

角度部分:

$scope.tabs = [
        {id: 0, title: 'a', contentId: '#0', data: 'lorem 1', ref:{data: 'myData[0]'}},
        {id: 1, title: 'b', contentId: '#1', data: 'lorem 2', ref:{data: 'myData[1]'}},
        {id: 2, title: 'c', contentId: '#2', data: 'lorem 3', ref:{data: 'myData[2]'}}
    ];

$scope.myData = [[
        {name: "ryan1", surn: "smith1", address:"main square 1", phone:"000000001"},
        {name: "ryan1", surn: "smith1", address:"main square 1", phone:"000000001"},
        ],
        [{name: "ryan2", surn: "smith2", address:"main square 2", phone:"000000002"},
         {name: "ryan2", surn: "smith2", address:"main square 2", phone:"000000002"},
        ],
        [{name: "ryan3", surn: "smith3", address:"main square 3", phone:"000000003"},
         {name: "ryan3", surn: "smith3", address:"main square 3", phone:"000000003"},
        ],
];