我将为web应用程序使用knockout.js或angular.js libs(绑定支持的b / c).
我的问题是 – 如何将这些库集成到现有的UI库中,如Dojo,jQueryUI,Ext.js,YUI,..
例如.在UI库中使用数据绑定suport / Syntax的用法如何?您必须实现像自定义绑定的东西才能使用窗口小部件UI UI?
对于Knockout,情况是相当不错的.可以通过
custom bindings与第三方小部件集成.绑定API非常简单和海峡.所有你需要的是实现一个或两个方法(引用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,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. } };
大部分时间实现单一更新方法就足够了.甚至有a collection of ready-made bindings for jQuery UI.它并不涵盖所有的jQuery UI小部件,但是由于创建自定义绑定是如此简单,您可以根据需要实现自己的绑定.
对于JS角度来说情况比较困难.您可以创建自定义绑定作为您自己的Directive的一部分.指令API要求您编写更多的代码.指令的生命周期也很复杂.所以,他们需要相当多的时间来学习.
同时它允许您指定很多不同方面的行为.例如,您可以通过指令完全重写小部件的内部HTML表示,并在其中使用角度模板.在Knockout中,您需要使用jQuery.不幸的是,与Knockout指令中的自定义绑定不同,更适合编写自己的小部件,而不是与现有的小部件集成.
总结:
敲击绑定更容易.与第三方小部件集成很容易.>角度指令更适合编写自己的小部件,但同时更强大.