ngGrid afterSelectionChange не срабатывает

У меня есть ngGrid на частичной странице, и я пытаюсь получить доступ к выбранным элементам на главной странице, я предполагаю, что лучший способ сделать это — с помощью $emit (в родительскую область) и $on (чтобы поймать событие ). По какой-то причине мой afterSelectionChange не срабатывает, и мне интересно, не делаю ли я что-то не так. Или, если есть лучший способ отслеживать изменения даже в выборе дочерней сетки.

I have

{{mySelectedItems}}
On my partial, and it updates just fine. But also have
{{selectedDevices}}
On my main view, and it's never getting updated. A breakpoint on the function within the "afterSelectionChange" also is not getting hit. here's the gridoptions. zz is just my previously defined data, not really relevant, also chopped out my columnDefs to minimize space.

$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;
})

чтобы уловить изменения.


person Joe    schedule 06.02.2014    source источник
comment
Я не получил ошибок компиляции или отладки браузера.   -  person Joe    schedule 06.02.2014


Ответы (1)


Итак, очевидно, вы не можете установить точку останова там, где я пытался, я добавил строку отладчика, и она успешно сломалась в afterselectionchange. Это было излучение, которое на самом деле не работало правильно. но как только я смог успешно перейти к отладке, я смог отследить проблему до проблемы области. Я ловил событие в неправильной родительской области. Поначалу это немного сбивало меня с толку, потому что мы используем бритвенные @sections, поэтому частичное представление не включалось в ту же родительскую область, оно было привязано к странице макета. Я переместил свой ng-контроллер в div, окружающий партиал в этом разделе, и это решило проблему.

Урок здесь... следите за своими прицелами.

person Joe    schedule 06.02.2014