2015-01-20 6 views

Antwort

4

benötigen I diese Funktionalität, um eine Platte zu zeigen, wenn mindestens 1 Zeile ausgewählt wurde. Ich habe ursprünglich eine Uhr aufgebaut, aber ich entschied, dass das zu teuer war.

Ich fügte schließlich einen Rückruf innerhalb der StSelectRow-Direktive hinzu.

ng.module('smart-table') 
    .directive('stSelectRow', function() { 
    return { 
     restrict: 'A', 
     require: '^stTable', 
     scope: { 
      row: '=stSelectRow', 
      callback: '&stSelected' // ADDED THIS 
     }, 
     link: function (scope, element, attr, ctrl) { 
     var mode = attr.stSelectMode || 'single'; 
     element.bind('click', function ($event) { 
      scope.$apply(function() { 
       ctrl.select(scope.row, mode, $event.shiftKey); 
       scope.callback(); // AND THIS 
      }); 
     }); 

     //***/// 
     } 
    }; 
    }); 

war ich dann in der Lage, eine Funktion von meinem Controller an die Richtlinie zu übergeben (Anmerkung: Sie können die ausgewählte Zeile zurück, gehe ich brauchte nicht zu)

tr ng-repeat="row in customerResultsTable" st-select-row="row" st-select-mode="multiple" st-selected="rowSelected()"> 

diesen Beitrag referenzierte für Hilfe Callback function inside directive attr defined in different attr

+0

Danke, das löst mein Problem! –

+0

Dies könnte eine nette Ergänzung zur Smart-Tabelle Codebase sein? – John

+0

@Johann Yeah sollte eine nette PR sein. Danke für das What-About-Bob – Bowofola

0

Hier eine einfache Uhr ist auf eine Smart Table zu platzieren:

// fired when table rows are selected 
$scope.$watch('displayedCollection', function(row) { 

    if(!row) return; 

    // get selected row 
    row.filter(function(r) { 
    if (r.isSelected) { 
     console.log(r); 
    } 
    }) 
}, true); 

verwandten html:

<table st-table="displayedCollection" st-safe-src="rowCollection" class="select-table table"> 

This github issue war hilfreich.

+0

das funktioniert für mich aber gibt Fehler beim Laden der Seite von "Fehler: Zeile ist undefined Smart-Tabelle". Haben Sie Vorschläge, wie Sie diesen Fehler beheben können? Danke – totallytotallyamazing

+0

@totallytotallyamazing keine Entschuldigung, ich habe nicht viel Angular in diesen Tagen so kann dir leider nicht helfen. – Banjer

+0

Vielen Dank für Ihre Rückmeldung! – totallytotallyamazing