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.
fonte
2012-06-18 12:59:03
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 :( –
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. –
@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 è. –