2016-07-11 15 views
0

Ich habe das folgende Stück Code:Benutzerdefinierter Ereignishandler wird nicht ausgeführt, wenn Angular UI Sortable verwendet wird?

<ul ui-sortable ng-model="list"> 
    <!-- onDragStartHandler() is a global function, not part of $scope --> 
    <li draggable ondragstart="onDragStartHandler();" ng-repeat="item in list">Item: {{item}}</li> 
    </ul> 

Wenn ui-sortable (github) Richtlinie verwendet wird, wird der Code an ondragstart haupt nicht ausgeführt.

Sie können dies here sehen.

Haben Sie Ideen, wie dieser Event-Handler aufgerufen werden kann?

Antwort

1

Meine Vermutung ist, das UI-Sortierbar manipuliert das Dom und entfernt die Event-Handler.

Wenn Sie look at their options - Sie können sich wahrscheinlich Draht in die Rückrufe wie so:

<ul ui-sortable="sortableOptions" ng-model="list"> 
    <!-- onDragStartHandler() is a global function, not part of $scope --> 
    <li draggable ng-repeat="item in list">Item: {{item}}</li> 
</ul> 

und dem Controller:

$scope.sortableOptions = { 
    start: onDragStartHandler(e, ui) 
}; 

Da onDragStartHandler eine globale Funktion ist - denken Sie daran, dass Sie bis zu $ ​​benötigen apply() den Bereich, um Aktualisierungen von Bindungen anzuzeigen.