2012-06-18 11 views
9

Utilizzerò le librerie knockout.js o angular.js (b/c del supporto di associazione) per un'applicazione web.angular.js (o knockout.js) con altre librerie UI?

La mia domanda è - come è la tua esperienza che integra queste librerie in librerie esistenti come Dojo, jQueryUI, Ext.js, YUI, .. E.g. in che modo l'utilizzo di suport/sintassi del database nelle librerie dell'interfaccia utente? Devi implementare qualcosa come l'associazione personalizzata per usare il widget UI lib?

risposta

15

Per Knockout la situazione è abbastanza buona. Uno può integrare con i widget di terze parti tramite custom bindings. L'API di bind è molto semplice e diretta. Tutto ciò che serve è quello di implementare uno o due metodi (citando documenti Knockout):

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. 
    } 
}; 

maggior parte del tempo di esecuzione singolo metodo update è sufficiente. C'è anche a collection of ready-made bindings for jQuery UI. Non copre tutti i widget dell'interfaccia utente di jQuery, ma dal momento che la creazione di collegamenti personalizzati è così semplice che è possibile implementare i propri binding come si vede.

Per quanto riguarda Angular JS la situazione è più difficile. È possibile creare un'associazione personalizzata come parte del proprio Directive. L'API delle direttive richiede di scrivere molto più codice. Anche il ciclo di vita delle direttive è abbastanza complesso. Quindi, ci vorrebbe un bel po 'di tempo per imparare.

Allo stesso tempo consente di specificare molti aspetti diversi del comportamento. Ad esempio, è possibile riscrivere completamente la rappresentazione HTML interna di un widget tramite directive e utilizzare modelli angolari all'interno. In Knockout avresti bisogno di usare jQuery per questo. Sfortunatamente, a differenza dei binding personalizzati nelle direttive Knockout, sono più adatti per scrivere i propri widget e non per integrarli con quelli esistenti.

In sintesi:

  • attacchi Knockout sono più facili. L'integrazione con i widget di terze parti è facile.
  • Le direttive angolari sono più adatte per scrivere i propri widget ma sono più potenti allo stesso tempo.
+0

Si noti inoltre che il sito di Angular è attualmente in un flusso in modo da interrompere molti collegamenti dalle discussioni. Mi piacerebbe davvero darti un esempio più specifico per l'integrazione angolare con jQuery, o Ext JS, o qualche altra libreria ma non riesco a trovare nulla :( –

+1

Un gruppo derivato di angularjs chiamato angular-ui (di cui sono un membro) è in procinto di creare widget angolari, avvolgendo plugin jqueryui e twitter bootstrap. È nelle fasi iniziali e abbiamo bisogno di rivedere il 1.0 appena rilasciato da angularjs. È vero che c'è più complessità nell'uso delle direttive angolari I punti di forza di Angular sono numerosi, ma il più grande ostacolo per la maggior parte è la segnalazione angolare che il modello è cambiato in modo che possa riflettere nella vista. –

+0

@DanDoyon La libreria Angular-ui è sicuramente utile, ma manca anche in molte aree. Per rispondere alla domanda dell'OP, l'integrazione di Angular in un'app esistente non è possibile. L'integrazione di Knockout è. Angolare è tutto o niente, Knockout non lo è. –

Problemi correlati