2012-06-18 9 views
9

Mam zamiar użyć albo knockout.js, albo bibliotek angular.js (b/c wiążącego wsparcia) dla aplikacji internetowej.integracja angular.js (lub knockout.js) z innymi bibliotekami UI?

Moje pytanie brzmi - w jaki sposób Twoje doświadczenie integruje te biblioteki z istniejącymi bibliotekami UI, takimi jak Dojo, jQueryUI, Ext.js, YUI, .. E.g. w jaki sposób wykorzystanie suportu danych/składni w bibliotekach UI? Czy musisz zaimplementować coś w stylu niestandardowego powiązania, aby móc korzystać z biblioteki UI?

Odpowiedz

15

Dla Knockout sytuacja jest całkiem dobra. Można zintegrować z widżetami innych firm za pośrednictwem custom bindings. API Bindings jest bardzo proste i nieskomplikowane. Wszystko, co potrzebne jest do realizacji jednego lub dwóch metod (podając docs odcięcia):

ko.bindingHandlers.yourBindingName = { 
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
     // This will be called when the binding is first applied to an element 
     // Set up any initial state, event handlers, etc. here 
    }, 
    update: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
     // This will be called once when the binding is first applied to an element, 
     // and again whenever the associated observable changes value. 
     // Update the DOM element based on the supplied values here. 
    } 
}; 

Większość czasu wykonawczego jedną metodę update jest wystarczające. Jest nawet a collection of ready-made bindings for jQuery UI. Nie obejmuje on wszystkich widżetów interfejsu użytkownika jQuery, ale ponieważ tworzenie niestandardowych powiązań jest tak proste, można zaimplementować własne powiązania według potrzeb.

Jeśli chodzi o Angular JS sytuacja jest trudniejsza. Możesz utworzyć niestandardowe powiązanie jako część własnego Directive. API dyrektyw wymaga napisania znacznie więcej kodu. Cykl życia dyrektyw jest również dość złożony. Tak więc zajęłoby sporo czasu, aby się uczyć.

W tym samym czasie pozwala określić wiele różnych aspektów zachowania. Na przykład możesz całkowicie przepisać wewnętrzną reprezentację HTML widżetu poprzez directive i użyć wewnątrz szablonów Angular. W Knockout będziesz musiał użyć jQuery. Niestety, w przeciwieństwie do niestandardowych powiązań w dyrektywach Knockout są bardziej odpowiednie do pisania własnych widgetów, a nie do integracji z już istniejącymi.

Podsumowując:

  • Knockout powiązania są łatwiejsze. Integracja z widżetami innych firm jest łatwa.
  • Dyrektywy kątowe są bardziej odpowiednie do pisania własnych widżetów, ale są bardziej wydajne w tym samym czasie.
+0

Należy również pamiętać, że strona Angular jest obecnie w ciągłym ruchu, więc wiele linków z dyskusji jest zepsuta. Bardzo chciałbym podać ci bardziej konkretny przykład integracji Angular z jQuery, Ext JS lub inną biblioteką, ale nie mogę znaleźć niczego :( –

+1

Odgałęziona grupa angularjs zwana kątową-ui (której jestem członek) jest w trakcie tworzenia widżetów kątowych, owijania wtyczek jqueryui i twitter bootstrap.To jest we wczesnych etapach i musimy zrobić rev-up do nowo wydanego 1.0 angularjs.Jest to prawda, że ​​jest więcej złożoności przy użyciu dyrektyw kątowych Siły Angulara są liczne Największą przeszkodą dla większości jest powiadamianie kątowe, że model zmienił się tak, że może odzwierciedlać w widoku. –

+0

@DanDoyon Biblioteka Angular-ui jest przydatna, na pewno, ale brakuje jej również w wielu obszarach. Aby odpowiedzieć na pytanie OP, integracja Angulara z istniejącą aplikacją nie jest możliwa. Integracja Knockout jest. Angular to wszystko albo nic, Knockout nie jest. –