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
,
У кого-нибудь есть предложение относительно правильного способа сделать это?
Спасибо.