angular.js(或knockout.js)与其他UI库的集成?

Bon*_*her 9 data-binding angularjs knockout.js

我将使用knockout.js或angular.js libs(绑定支持的b/c)用于Web应用程序.

我的问题是 - 您如何将这些库集成到现有的UI库中,如Dojo,jQueryUI,Ext.js,YUI等.例如,如何在UI库中使用数据绑定suport /语法?你是否必须实现类似自定义绑定的东西才能使用窗体小部件窗体UI?

And*_*кин 15

对于淘汰赛,情况非常好.可以通过自定义绑定与第三方小部件集成.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, 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.
    }
};
Run Code Online (Sandbox Code Playgroud)

大多数时候实现单一update方法就足够了.甚至还有一组用于jQuery UI的现成绑定.它没有涵盖所有jQuery UI小部件,但由于创建自定义绑定非常简单,您可以根据需要实现自己的绑定.

至于Angular JS,情况更加困难.您可以创建自定义绑定作为您自己的指令的一部分.Directives API要求您编写更多代码.指令的生命周期也非常复杂.所以,他们需要花费相当多的时间来学习.

同时,它允许您指定行为的许多不同方面.例如,您可以通过内部完全重写窗口小部件的内部HTML表示,directive并在其中使用Angular模板.在Knockout中你需要使用jQuery.不幸的是,与Knockout指令中的自定义绑定不同,它更适合编写自己的小部件而不是与现有小部件集成.

总结一下:

  • 敲除绑定更容易.与第三方小部件集成很容易.
  • Angular指令更适合编写自己的小部件,但同时功能更强大.