2012-05-31 16 views

Antwort

14

Sie sollten DOM Manipulation in Ihrem Controller überhaupt nicht tun. Stattdessen sollten Sie Anweisungen verwenden.

Ich habe für meinen eigenen Gebrauch eine Reihe von Richtlinien zu entwickeln: https://github.com/ganarajpr/Angular-UI-Components

Die Philosophie ist einfach, diese einfachen Stücke in den Richtlinien-Datei Code fallen:

.directive('maketab',function() { 
     return function(scope, elm, attrs) { 
      elm.tabs({ 
       show: function(event, ui) { 
         scope.$broadcast("tabChanged",ui); 
       } 
      }); 
     }; 
    }) 

Dann wird in den div die Sie möchten, in einem Register konvertieren:

<div id="mytab" maketab> 

<ul> 
.... 
</ul> 

<div>...</div> 
... 
</div> 

Beachten Sie, dass die div und seine untergeordneten Strukturen sollten auf das, was JQuer entsprechen y UI fordert dazu auf.

Für ein robusteres Beispiel und mehr Komponenten, sehen Sie sich das Github Repo an.

+0

Ich habe die gleichen Probleme erlebt, sogar die Richtlinie Zeug anwenden (wie Sie [hier] (http://plunker.no.de/edit/SzvzCB?live=preview) sehen können) –

+0

hey @ganaraj, kann binden Sie Click-Handler programmgesteuert? Ich baue eine App, um Tabellenbeziehungen (von json) grafisch zu erstellen. Nehmen wir an, ich möchte eine neue Tabelle auf der Leinwand hinzufügen, wenn ich mit der rechten Maustaste klicke. Wie könnte ich das tun? Ich bin sehr winkelig, aber nicht zu Js oder Jquery. – berto77

+0

@ Berto77 Sie können. Ich würde vorschlagen, dass Sie sich um alles innerhalb einer Direktive kümmern, denn das scheint der logischste Ort dafür zu sein. Ich habe über einen Weg nachgedacht, wie man eckige und Leinwand zusammenarbeitet. Ich bin mir nicht sicher, ob sie füreinander geeignet sind, weil sie verschiedene Anwendungsfälle ansprechen ... Während kantig für Web-Apps ist, würde Leinwand gut für Spiele passen (was ich denke, ist ein anderes Szenario) – ganaraj

Verwandte Themen