Bro*_*ato 4 knockout.js breeze
我用淘汰/微风开发了一个项目.
我想知道是否有可能强制淘汰赛将观察者标记为已更改(即使焦点仍在场中).我的goad是通知用户,无论何时他开始更改日期,他都能够保存它(立即显示一个按钮).例如,我有一个带日期的输入字段.用户开始在此字段中编辑日期.只有当用户离开该字段的焦点时,observable才应解释新的编码日期.但是我想Save button在输入字段中输入内容时立即显示我的内容.我希望我很清楚.
这是我的bindingHandlers,用于处理输入中的编辑日期:
ko.bindingHandlers.dateRW = {
//dateRW --> the 'read-write' version used both for displaying & updating dates
init: function (element, valueAccessor, allBindingsAccessor) {
var observable = valueAccessor();
var value = ko.utils.unwrapObservable(valueAccessor);
//handle the field changing
ko.utils.registerEventHandler(element, "change", function () {
var myDate = moment($(element).val(), "DD/MM/YYYY");
observable(myDate.toDate());
});
//ko.utils.registerEventHandler(element, "keyup", function () {
// As soon as user begin to type something, I would like to show my save button
//});
},
update: function (element, valueAccessor, allBindingsAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
var date = (typeof value !== 'undefined') ? moment(value) : null;
var dateFormatted = (date != null) ? date.format('DD/MM/YYYY') : '';
$(element).val(dateFormatted);
}
};
Run Code Online (Sandbox Code Playgroud)
我的观点是:
<input type="text" data-bind="dateRW: myDate" />
Run Code Online (Sandbox Code Playgroud)
不幸的是valueUpdate: 'afterkeydown',因为我正在使用自定义bindingHandlers,所以不起作用.
希望有人能指出我正确的方向.
谢谢.
尝试 observable.valueHasMutated()
编辑 在其他评论中,您提到您将保存启用绑定到'context.hasChanges()'(从Breeze EntityManager更新?).
我相信Breeze不会hasChanges通过订阅Knockout可观察通知进行更新.我认为它实际上包装了可观察的设置功能,并检查以确保该值实际发生变化.换句话说,我相信你实际上必须改变你的observables值(然后再返回)来触发hasChanges().
另一个(不太好)选项可能是尝试回到observable的父对象并得到它EntityAspect.然后你可以调用` setModified() '.做这一切的结合处理似乎像一个坏主意,因为它真正开始假定您绑定到可观察到的是一个微风实体的属性.
你可能最好(没有双关语)考虑类似迈克尔答案的选项.也许saveEnabled()在你的viewmodel中创建一个observable,如:
var saveEnabled = ko.observable(false);
context.hasChanges.subscribe(function() { saveEnabled(true); });
Run Code Online (Sandbox Code Playgroud)
然后,您既可以使用keyup绑定迈克尔暗示或添加其他subscribe上方的日期可观察到的-并返回到调用valueHasMutated()的绑定处理程序(如果你能找到它).
| 归档时间: |
|
| 查看次数: |
5131 次 |
| 最近记录: |