So definieren Sie eine Funktion innerhalb von Angular-js-Richtlinie
Ich erstellt eine Richtlinie für die Auswahl von Benutzern mithilfe der bootstrap - Dropdown-element. wie folgt.
Javascript
app.directive('usersDropdown', function(ConfigService,$http) {
return {
templateUrl: 'app/views/users_dropdown.html',
link: function($scope, element, attrs) {
});
};
});
users_dropdown.html
<div class="btn-group pull-right" >
<a class="btn dropdown-toggle" data-toggle="dropdown" href="">
Select User
<span class="caret"></span>
</a>
<ul class="dropdown-menu pull-right align-left" role="menu" aria-labelledby="dropdownMenu">
<li ng-repeat = "userList in userLists"><a ng-click="getUserDetails('{{userList.SessionId}}')" style="cursor:pointer">{{userList.UserPartyName}}</a></li>
<li ng-hide="userLists" style="cursor:pointer"><a>No Users</a></li>
</ul>
</div>
Muss ich eine Funktion erstellen getUserDetails
, die aufgerufen werden sollen, während Sie auf einen Benutzer aus der Liste. Meine Frage ist, wie Sie zur Definition dieser Funktion in der Richtlinie selbst? Ich schrieb es in den controller. Aber das problem ist ich bin mit mehreren Controllern. Es ist nicht eine gute Praxis zu schreiben, die dieselbe Funktion in allen Controllern. Wenn ich schrieb, die Funktion gemeinsam für alle controller, die innerhalb der Richtlinie, es wird gut sein. Wenn Sie eine gute Lösung haben, lassen Sie mich wissen, dass.
Änderung
Ich meine modifizierten Richtlinie js wie folgt
app.directive('usersDropdown', function(ConfigService,$http) {
return {
templateUrl: 'app/views/users_dropdown.html',
link: function($scope, element, attrs) {
$scope.getUserDetails = function(user_id){
console.log(user_id);
}
}
};
});
Dafür bin ich immer das Ergebnis in der Konsole als {{userList.SessionId}}
. Nicht der Wert. Aber wenn ich Überprüft die Funktion übergeben erwarteten Wert.
Dann, warum der erwartete Wert ist nicht immer innerhalb der Funktion?
Gelöst
Ich löste das Problem, indem Sie meinen Richtlinien html-Template. Ich entfernte '
und {{
aus wie folgt.
ng-click="getUserDetails(userList.SessionId)"
InformationsquelleAutor Sajith | 2013-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den link Richtlinie-Funktion ist eine js-Funktion, in der man alles darf
Ebenfalls sollten Sie die Verwendung isolierter Bereich zu erreichen, wenn Sie wollen diese Funktion nicht erreichbar von außerhalb der Richtlinie.
Vielen Dank für die Klarstellung. Aber konnte Sie überhaupt Auslöser eines Konflikts, wenn man erklären würde, Sie als singletons und nicht gebunden an den Umfang?
Wenn nicht gebunden Umfang, Sie werden nicht in der Lage, rufen Sie die Funktion aus Vorlage.
Ich meine modifizierten code, wie Sie erwähnt. Aber ich habe ein Problem. Bitte überprüfen Sie die modifizierte Frage.
wie nennen
somefunction() function
von controller-Funktion? möglich ?InformationsquelleAutor icanbeacoder
Wenn Sie in der Notwendigkeit von einer Funktion oder variable Daten, die in verschiedenen Orten entlang Ihrer Anwendung, könnte es evtl eine gute Lösung zu bewegen, einige Ihrer Logik in einer service.
Könnte man, zum Beispiel, erstellen Sie eine
user service
, die sollten Anwendung-breiten Zugang zu Nutzer-Informationen und Methoden.Du bist herzlich willkommen. Wie Sie vorgeschlagen haben, können Sie Funktionen definieren, die für Ihre Richtlinie innerhalb des Richtlinien-controller-Funktion. Sie könnten das tun, in der verknüpfungsfunktion aswell. Es kommt auf die tatsächliche Benutzung Fall, was Sie machen sollten. Eine Richtlinie mit einer privaten oder isolieren-Bereich sollte unabhängig vom rest der Anwendungen Controller. Wenn Sie in der Notwendigkeit einer Funktion, die hängt sehr stark vom rest der Anwendung, betrachten Sie ein Architektur-refactoring
InformationsquelleAutor Sprottenwels