クライアントの日時を変更できるように、datetimeサーバーセットのセットを計算するのは難しいです。 以下のコードは、負荷サーバーのデータとして機能し、サーバーに必要なisoフィールドを追加します。ノックアウトマッピングネストされた配列の計算されたプロパティ
ユーザーが日付/時刻入力フィールドを変更したときに、isoフィールドを動的に計算可能にするにはどうすればよいですか?これまで
ノックアウトJS:
var ViewModel = function() {
var self = this;
// ...other first-level observables and funct
function scadenzeNuove(payload) {
ko.mapping.fromJS(payload, {}, this);
this.iso = ko.pureComputed(function() {
var data_re = /^(\d{2})\/(\d{2})\/(\d{4})T(\d{2}):(\d{2})/;
if (!payload.data) {
return false;
};
var data_string = payload.data;
if (!payload.ora) {
data_string = data_string + 'T00:00';
} else {
data_string = data_string + 'T' + payload.ora;
};
var data_match = data_re.exec(data_string) ? data_re.exec(data_string) : false;
if (!data_match) { return false; };
var data = new Date(data_match[3], data_match[2]-1, data_match[1], data_match[4], data_match[5])
return data;
}, this);
};
var scadenzeNuoveMapping = {
create: function(options) {
return new scadenzeNuove(options.data);
},
};
self.scadenzeNuove = ko.observableArray();
self.compScadenze = function(form) {
$.getJSON('{{ compute_scadenza }}', $(form).serialize(), function(data){
ko.mapping.fromJS(data, scadenzeNuoveMapping, self.scadenzeNuove);
});
};
};
var vm = new ViewModel()
ko.applyBindings(vm);
HTML:
は<div data-bind="if: scadenzeNuove">
<ul data-bind="foreach: scadenzeNuove">
<li>
<span data-bind="text: iso().toLocaleFormat()"></span>
<input type="text" name="n_data" data-bind="value: data">
<input type="text" name="n_ora" data-bind="value: ora">
<input type="text" name="n_desc" data-bind="value: desc">
</li>
</ul>
</div>
私は問題があると仮定し、ISOプロパティDそのしかし、私は正しいタイミングをどのように適用するのかわかりません... – user2154587
[このレスポンス](https:/)に示すように、私は裸のko.computedを使用しようとしましたが、 /stackoverflow.com/questions/10906252/knockout-mapping-with-computed-fields?rq=1)しかし、まだ動作していません。isoフィールドはコンポーネントのフィールド値が変更されても更新されません。 – user2154587