无法使 NgTable 使用 AngularJs 1.5
Unable to make NgTable work with AngularJs 1.5
我正在尝试在基于组件的架构中将 NgTable 与 angularjs 1.5 集成(因此,没有旧式控制器)。
出现了NgTable控件(过滤,排序图标),但是好像根本不起作用,所以不过滤也不排序。
这是我的代码
--- activity-列表-module.js ---
angular.module('activityList', ['ngTable']);
--- activity-列表-component.js ---
(function(){
'use strict';
angular.
module('activityList').
component('activityList', {
templateUrl: "app/activity-list/activity-list.html",
controller: ['NgTableParams', function (NgTableParams) {
var self=this;
self.activitiesForm=[{id:0,description:"att0"},{id:1,description:"att1"},{id:2,description:"att2"}];
self.tableParams = new NgTableParams({}, { dataset: self.activitiesForm});
}]
});
})();
--- activity.list.html ----
<div style="margin:20pt">
<h3>Manage Activities</h3>
<div style="margin:20pt">
<h3>Manage Activities</h3>
<div class="row" style="margin-left:20pt" >
<table id="myViewTable" ng-table="$ctrl.tableParams" class="table" show-filter="true" class="table actTable" style="width:95%;table-layout: fixed;" >
<tbody>
<tr ng-repeat="projectActivity in $ctrl.activitiesForm track by projectActivity.id">
<td data-title="'Id'">{{projectActivity.id}}</td>
<td data-title="'description'" filter="{ description: 'text'}" sortable="'description'">{{projectActivity.description}}</td>
</tr>
</tbody>
</table>
</div>
</div>
当然是在另一个页面使用标签<activity-list></activity-list>
调用组件
我正在使用 AngularJs 1.5.8 和 ng-table 3.0.1.
我做错了什么或者 AngularJs >= 1.5 和 ng-table 不兼容?
这里是 plnkr
PS 最后一种情况,我该怎么办? smarttable 与 AngularJs 1.5 兼容吗?
在 ng-table GIT 回购中提出问题后,我从 ng-table 的创建者那里得到了一个工作示例,我可以看看。
关键在于使用控制器变量,而不是 ng-table 生成的 $data 变量。
因此,在 'new style' 组件的情况下,问题已解决更改
<tr ng-repeat="projectActivity in $ctrl.activitiesForm track by projectActivity.id">
和
<tr ng-repeat="projectActivity in $data track by projectActivity.id">
在 "old Style" 控制器的情况下,它已解决更改
<tr ng-repeat="user in vm.data">
和
<tr ng-repeat="user in $data">
我不太喜欢这个解决方案,因为它增加了一种全局性,但它确实有效。
编辑
它也可以使用
$ctrl.tableParams.data
(对于组件示例)和 vm.tableParams.data
(对于控制器示例)这让我感觉好多了。
我正在尝试在基于组件的架构中将 NgTable 与 angularjs 1.5 集成(因此,没有旧式控制器)。
出现了NgTable控件(过滤,排序图标),但是好像根本不起作用,所以不过滤也不排序。
这是我的代码
--- activity-列表-module.js ---
angular.module('activityList', ['ngTable']);
--- activity-列表-component.js ---
(function(){
'use strict';
angular.
module('activityList').
component('activityList', {
templateUrl: "app/activity-list/activity-list.html",
controller: ['NgTableParams', function (NgTableParams) {
var self=this;
self.activitiesForm=[{id:0,description:"att0"},{id:1,description:"att1"},{id:2,description:"att2"}];
self.tableParams = new NgTableParams({}, { dataset: self.activitiesForm});
}]
});
})();
--- activity.list.html ----
<div style="margin:20pt">
<h3>Manage Activities</h3>
<div style="margin:20pt">
<h3>Manage Activities</h3>
<div class="row" style="margin-left:20pt" >
<table id="myViewTable" ng-table="$ctrl.tableParams" class="table" show-filter="true" class="table actTable" style="width:95%;table-layout: fixed;" >
<tbody>
<tr ng-repeat="projectActivity in $ctrl.activitiesForm track by projectActivity.id">
<td data-title="'Id'">{{projectActivity.id}}</td>
<td data-title="'description'" filter="{ description: 'text'}" sortable="'description'">{{projectActivity.description}}</td>
</tr>
</tbody>
</table>
</div>
</div>
当然是在另一个页面使用标签<activity-list></activity-list>
调用组件
我正在使用 AngularJs 1.5.8 和 ng-table 3.0.1.
我做错了什么或者 AngularJs >= 1.5 和 ng-table 不兼容?
这里是 plnkr
PS 最后一种情况,我该怎么办? smarttable 与 AngularJs 1.5 兼容吗?
在 ng-table GIT 回购中提出问题后,我从 ng-table 的创建者那里得到了一个工作示例,我可以看看。
关键在于使用控制器变量,而不是 ng-table 生成的 $data 变量。 因此,在 'new style' 组件的情况下,问题已解决更改
<tr ng-repeat="projectActivity in $ctrl.activitiesForm track by projectActivity.id">
和
<tr ng-repeat="projectActivity in $data track by projectActivity.id">
在 "old Style" 控制器的情况下,它已解决更改
<tr ng-repeat="user in vm.data">
和
<tr ng-repeat="user in $data">
我不太喜欢这个解决方案,因为它增加了一种全局性,但它确实有效。
编辑
它也可以使用
$ctrl.tableParams.data
(对于组件示例)和 vm.tableParams.data
(对于控制器示例)这让我感觉好多了。