Winkel: Aufruf einer Funktion mit parameter mithilfe von ng-klicken Sie in der Richtlinie Vorlage

neu eckig hier 🙂
Ich habe eine benutzerdefinierte Richtlinie, die eine ng-klicken Sie auf in es die der eine Funktion aufruft, die ich definiert habe in einem controller (nicht der Richtlinie-Controllers).
Dies ist die html-Ansicht:

<course-pass course-id="bla"/>

Dies ist die Richtlinie:

 scotchApp.directive("coursePass", function($compile) {
    return {
    restrict: "E",
    controller: 'dropdownCtrl',
    replace:'true',
    templateUrl: 'template/coursepass.html',
    scope: {
            courseId: '@courseId',
        }
    }
});

Dies ist coursepass.html (die Vorlage):
Wichtigste Zeile ist der li-tag

<div class="btn-group courseContainer" dropdown>
    <button type="button" class="btn dropdown-toggle course passedCourse" dropdown-toggle ng-disabled="disabled" id="{{courseId}}">
        some name<span class="caret"></span>
    </button>
    <ul class="dropdown-menu" role="menu">
        <li><a ng-click="markFail({{courseId}})">mark fail</a></li>
    </ul>
</div>

Ist und diese Funktion in der dropdownCtrl controller:

$scope.markFail = function(courseId) {
    alert("we do nice things");
    //do some stuff
}

Die Funktion macht, und so tut {{courseId}}
Aber ich bekomme diese Fehlermeldung:

Error: [$parse:syntax] http://errors.angularjs.org/1.2.25/$parse/syntax?p0=courseId&p1=is%20unexpected%2C%20expecting%20%5B%3A%5D&p2=12&p3=markFail(%7B%7BcourseId%7D%7D)&p4=courseId%7D%7D)
    at Error (native)

Auf Winkel-Website sagt:

Syntax Error: Token 'courseId' is at column {2} of the expression [{3}] starting at [{4}].

Und ng-click wird nicht die Funktion auslösen.
Wenn ich das temeplte etwas zu Lesen wie:

<li><a ng-click="markFail(someString)">mark fail</a></li>

Kann ich sehen, dass der on-click funktioniert und fordert markFail-Funktion, aber der übergebene parameter ist nicht definiert.

Was mache ich falsch?
Danke!

wenn es eine ID - sollte es nicht someInteger, nicht classextender? Weiß nicht, ob das dein Problem - aber die überprüfung.
Versuchen Sie es mit markFail("someString"). Beachten Sie die zusätzlichen Anführungszeichen. Sollte dies funktionieren. Wenn es das tut, markFail(courseId) sollten auch funktionieren. Wenn das nicht, dann courseId nicht richtig eingestellt ist, irgendwo.
Alles in javascript ist ein string
'<a ng-click='markFail("classextender")'>' geklappt hat (der string gesendet wurde, in der Funktion. aber <a ng-click='markFail("{{courseId}}")'> hat nicht funktioniert, es sendet die Zeichenfolge {{courseId}} innen und nur machen, es in die DOM @itamar ja, jetzt Versand string, nur zum testen 🙂

InformationsquelleAutor Aviv | 2015-02-20

Schreibe einen Kommentar