我将ngGrid放在部分页面中,并且我正在尝试访问主页面上的所选项目,我认为完成此操作的最佳方法是使用$ emit(到父作用域)和$ on(到抓住事件)。出于某种原因,我的afterSelectionChange似乎没有被解雇,我想知道我是否只是做错了什么。或者,如果有更好的方法来跟踪子网格选择的变化,那么。
我有{{mySelectedItems}}在我的部分,它更新就好了。但也有
{{selectedDevices}}在我的主要观点上,它永远不会得到更新。 “afterSelectionChange”中函数的断点也没有被击中。这是网格选项。 zz只是我以前定义的数据,并不是真正相关的,也删掉了我的columnDefs以最小化空间。
$scope.mySelectedItems = [];
$scope.gridItems = @Html.Raw(Json.Encode(zz))
$scope.gridOptions = {
selectedItems:$scope.mySelectedItems,
afterSelectionChange: function (data) {
$scope.$emit("selectionChanged", $scope.mySelectedItems)},
multiSelect:true,
data: 'gridItems',
enableColumnResize: true
};
最后在我的主视图上,我有
$scope.$on("selectionChanged",function(event,data){
$scope.selectedDevices=data;
})
抓住变化。
答案 0 :(得分:1)
好的,显然你无法在我尝试的地方设置一个断点,我添加了一个调试器线,它在后续更改中成功打破了。发射器实际上并没有正常工作。但是一旦我能够成功进入调试,我就可以将问题追溯到范围问题。我在错误的父范围内捕获事件。 起初对我来说有点混乱,因为我们使用的是razor @sections,因此部分视图没有包含在同一个父作用域中,它是布局页面的父级。 我将我的控制器移动到该部分中的部分区域,并解决了它。
这里的教训......注意你的范围。