2016-06-29 6 views
4

Ich habe unten Code in ngGrid:Anruf ein Verfahren, in ui-Sref in AngularJS

cellTemplate: '<div class="padding-t-5 padding-l-5"><a ui-sref="editCamera({id:row.entity.id})" ><i class="fa fa-edit margin-r-10"></i></a>\n\ 
        <button ng-click="confirmClick() && grid.appScope.deleteRow(row)" confirm-click><i class="fa fa-trash"></i></button></div>' 

I gefragt, wie die Methode editCamera in ui-SREF erwähnt zu definieren, in die Steuerung.

Wenn ich hinzufügen ng Taste klicken und dann, wie würde ich die id (weitergegeben ui-Sref) passieren

Ich versuchte $ scope.editCamera zu definieren, verwenden, aber vermöge gearbeitet.

**** UPDATE ******

Was ich brauche, ist auszuführen hinzuzufügen und zu bearbeiten Operationen in einem gleichen Controller, für das ich eine andere Methode für den Bearbeitungsvorgang benötigen.

+0

Warum müssen Sie 'editCamera' als Methode im Controller definieren? Ist die 'editCamera' nicht der Name des Staates, zu dem Sie navigieren? – Chanthu

+0

Ich muss etwas ausführen. – MonsterJava

Antwort

1

anstelle des ui-sref

HTML

<div class="padding-t-5 padding-l-5"> 
    <a ng-click="editCamera(row.entity.id)"> 
    <i class="fa fa-edit margin-r-10"></i> 
    </a> 
    <button ng-click="confirmClick() && grid.appScope.deleteRow(row)" confirm-click> 
    <i class="fa fa-trash"></i> 
    </button> 
</div> 

JS

$scope.editCamera = function(id) { 
    $state.go('INSERT-EDIT-CAMERA-STATE-NAME-HERE', {id: id}); 
} 

Abschließender Hinweis ng Klick - semantisch sprechen jetzt, dass wir die ui-sref getötet haben, die in turn tötet den href, den es generiert Es wäre gut, das Element zu einem Button oder etwas anderem als einem Anker-Tag zu ändern. Aber ich überlasse die Semantik dir.

+0

warum Sie vorschlagen, NG-Klick anstelle von UI-Sref. Ich bin nur neugierig. – MonsterJava

+1

ui-sref doenst tun, was Sie tun wollen ... Wenn Sie nur die ID an den Zustand übergeben möchten, dann verwenden Sie ui-sref = "status-name ({id: row.entity.id})" –

+0

http : //stackoverflow.com/questions/25647454/how-to-pass-parameters-using-ui-sref-in-ui-router-to-controller –

3

ui-sref behandelt editCamera() als Status für das angulare Routing, da es bei der Kompilierung in ng-href konvertiert wird. Wenn Sie also editCamera() im Controller definieren, wird es nicht als Routing-Status aufgerufen, und die Parameter werden in diesen übergeben, d. H. ID wird als routes-Parameter fungieren. Um eine Funktion aufzurufen, müssen Sie stattdessen ng-klicken.

Oder wenn Sie mit Routing als editCamera als Staat mit params ID erstellen und Ui-Sref verwenden.

0

ui-sref ist eine vom UI-Router verwendete Statusreferenz. Anstatt eine Controller-Methode aufzurufen, wird diese zum Weiterleiten an eine andere Seite verwendet.