我的bindingHandlers中未定义viewModel和bindingContext

时间:2013-12-27 14:04:21

标签: knockout.js bindinghandlers

我有以下bindingHandlers:

ko.bindingHandlers.dateRW = {
    init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
         ko.utils.registerEventHandler(element, "change", function () {
            var value = $(element).val();
            var dateFormatted = moment.utc(value, "DD/MM/YYYY");
            if (dateFormatted !== null && dateFormatted.isValid())
                observable(dateFormatted.toDate());
            else {
                observable(null);
                observable.notifySubscribers(null);
            }
        });
    },
    update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        var date = (typeof value !== 'undefined') ? moment.utc(value) : null;
        var dateFormatted = (date !== null) ? date.format('DD/MM/YYYY') : '';
        $(element).val(dateFormatted);
    }
};

在我看来:

<div data-bind="with: transport()" 
    <input type="text" data-bind="dateRW: startDate">
</div>

在初始化部分,您有elementvalueAccessorallBindingsviewModelbindingContext

我不知道为什么,但viewModelbindingContext未定义。

有什么想法吗?

感谢。


更新

我发现如果我在代码中注释一行:

ko.validation.makeBindingHandlerValidatable('dateRW');

然后我可以在我的init函数中访问viewModel。这似乎是问题所在。此外, knockout.Validation 的当前版本是1.01,似乎与我需要的东西不兼容(viewModel额外属性)。

希望有人可以帮助我。

感谢。

0 个答案:

没有答案