我在同一页面上有两个网格,数据流入两个单独的标签。这个功能没有问题。
我的问题是自定义排序和过滤似乎是冒泡的,我只能在一个网格而不是另一个网格上进行过滤和排序。
下面是我的两个sortListener函数
var sortListener = function( grid, sortColumns ) {
console.log('sort');
var page = $scope.gridApi.pagination.getPage();
var pageSize = $scope.gridOptions1.paginationPageSize;
var url = getGridPageUrl(page, pageSize);
var columns = $scope.gridApi.grid.columns;
var payload = getGridPagePayload(sortColumns, columns);
sendGridPageRequest(url, payload);
};
var sortSiteListener = function(grid, sortColumns) {
console.log('sortOnSiteListener');
var page = $scope.gridApi.pagination.getPage();
var pageSize = $scope.gridOptions12.paginationPageSize;
var urlOnSite = getOnSiteGridPageUrl(page, pageSize);
var columns = $scope.gridApi.grid.columns;
var payloadOnSite = getGridPagePayload(sortColumns, columns);
sendOnSiteGridPageRequest(urlOnSite, payloadOnSite);
};
tabset(ng-if="dataConstant.item.location_type !== 'On-Site Depot'")
tab(heading="Audit Grid", select="tabShown = !tabShown", desselect="tabShown = !tabShown")
div(ui-grid-auto-resize, id="grid1", ui-grid="gridOptions1", ui-grid-pagination, ui-grid-edit, ui-grid-row-edit, class="auditGrid")
tab(heading="On Site Depot Parts", select="tabShown = !tabShown", desselect="tabShown = !tabShown")
div(ui-grid-auto-resize, id="grid12", ui-grid="gridOptions12", ui-grid-pagination, ui-grid-edit, ui-grid-row-edit, class="auditGrid")
在$ scope.gridOptions1和$ scope.gridOptions12的onRegisterApi中触发它们。
调用$ scope.gridOptions1中的函数时,一切都可以正常运行sortListener
,但sortOnSiteListener
也会触发。
我似乎无法弄清楚为什么会冒泡。
答案 0 :(得分:1)
您可能无法将相同的filterfunction-reference传递给不同的gridOptions。
如果你有类似的东西:
public class TestActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
textView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
setContentView(textView);
String html = "<div>test<br/>" +
"<img src=\"http://i2.cdn.turner.com/money/dam/assets/150910165544-elon-evo-open-still-384x216.png\"></img>" +
"<br/>/test</div>";
textView.setText(Html.fromHtml(html, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
PicassoTargetDrawable d = new PicassoTargetDrawable(TestActivity.this);
Picasso.with(TestActivity.this)
.load(source)
//add placeholder here
.into(d);
return d;
}
}, null));
}
}
而是为每个Grid使用一个新函数。
var genderFilter = { someFilter }; // mistake
var gridOptions1 = {
data: ...,
columnDefs: [
{ field: 'foo', filter: genderFilter },
...
};
var gridOptions12 = {
data: ...,
columnDefs: [
{ field: 'foo', filter: genderFilter },
...
};
您可以使用克隆功能或手动创建新实例。
请参阅Plunkr with WRONG setup和Plunkr with RIGHT setup。性别专栏是值得关注的。