Knockout Custom Binding - работает в jsfiddle, но не в 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 от main:

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) {
    //...
});

Замечания:

  • Трафика Chrome appBindings.js загружается.
  • может точка останова внутри appBindings.js как это загружается.
  • но что бы я ни старался, init / update никогда не вызывается.
  • привязка работает за пределами дюрандала ( http://jsfiddle.net/skysigal/8LJw5/3/)

Я также пробовал различные другие способы загрузки определения привязки:

  • используя в main define + shim файла не AMD, содержащего определение привязки.
  • загрузка файла не из AMD (содержащего определение привязки) непосредственно из index.html с использованием тега script
  • делая это зависимость от view не main,

У кого-нибудь есть предложение относительно правильного способа сделать это?

Спасибо.

0 ответов

Другие вопросы по тегам