Knockout Custom Binding - 适用于jsfiddle,但不适用于Durandal

时间:2014-07-01 11:53:40

标签: knockout.js durandal durandal-2.0

绝对喜欢Durandal的建筑/清晰度。但是让durandal 2.0.1识别任何自定义的敲除绑定都遇到了麻烦。

我的示例View包含:

<div data-bind="test: {}" />

绑定是在appBindings.js中定义的,其中包含:

define([ 'jquery', 'knockout'], 
  function ($, ko) {
    ko.bindingHandlers.test = {
      init: function(element, valueAccessor, allBindingsAccessor) {alert(0);},
      update: function(element, valueAccessor, allBindingsAccessor) {alert(1);}
    }
    var model = function(){} 
    return new model();
});

来自required的{​​{1}}:

main

观察:

  • Chrome正在加载流量显示requirejs.config({ paths: { ... 'durandal':'../lib/durandal/js', 'jquery': '../lib/jquery/jquery-1.9.1', 'knockout': '../lib/knockout/js/knockout-3.1.0', 'bootstrap': '../lib/bootstrap/js/bootstrap', ... 'bindings': 'bindings/appBindings' }, shim: { 'bootstrap': ['jquery'], //'ko-binding-test': ['jquery','knockout'], } }); define(['libs/core','durandal/system', 'durandal/app', 'durandal/viewLocator','services/resourceService','bindings'], function (core, system, app, viewLocator, resourceService, bindings) { //... });
  • 在加载时可以在appBindings.js内断点。
  • 但无论我尝试什么,都不会调用appBindings.js / init
  • 绑定在durandal(http://jsfiddle.net/skysigal/8LJw5/3/
  • 之外起作用

我还尝试了各种其他加载绑定定义的方法:

  • update中使用包含绑定定义的非AMD文件的main + define
  • 使用脚本标记
  • 直接从index.html加载非AMD文件(包含绑定定义)
  • 使其成为shim的依赖关系,而不是view

任何人都有关于正确方法的建议吗?

谢谢。

0 个答案:

没有答案