ngSerid afterSelectionChange没有触发

时间:2014-02-06 17:44:22

标签: angularjs ng-grid

我将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;
})

抓住变化。

1 个答案:

答案 0 :(得分:1)

好的,显然你无法在我尝试的地方设置一个断点,我添加了一个调试器线,它在后续更改中成功打破了。发射器实际上并没有正常工作。但是一旦我能够成功进入调试,我就可以将问题追溯到范围问题。我在错误的父范围内捕获事件。 起初对我来说有点混乱,因为我们使用的是razor @sections,因此部分视图没有包含在同一个父作用域中,它是布局页面的父级。 我将我的控制器移动到该部分中的部分区域,并解决了它。

这里的教训......注意你的范围。