私はTypescriptを使用してノックアウトViewModelを定義しています。JSONファイルのノックアウトバインディング
私はJSONファイルを持っています。その構造はhere(ここに貼り付けるのが少し大きいのでGithubの要点)で見ることができます。
構造は基本的に:
オーダーライン(ルート) - >マイルストーン - > factory_date
または経口的(多くの)順序ラインは、(多くの)マイルストーンを有するそれぞれ有する(1)工場日。
私は次のようにViewModelにを構築しようとしています:
var FactoryAppViewModel = (function() {
function FactoryAppViewModel(seasonID) {
var self = this;
self.seasonID = seasonID;
self.orderlines = ko.observableArray([]);
this.buildViewModel();
}
FactoryAppViewModel.prototype.buildViewModel = function() {
var self = this;
var getOrderLines = HTTP.get("/season/" + self.seasonID + "/orderlines").done(function (data) {
self.orderlines(JSON.parse(data));
}).fail(function() {
error("Could not get orderlines");
});
};
私の知る限りでは、ここではデータのJSON.parse
は、しかし、私はKOを適用する必要があり、注文ラインko.observableArray([])
に値を適用します。オーダーラインのchildren(マイルストーン)、マイルストーンの子供(factory_date)にも参照できます。そして、私はこれを行う方法を知らない。 JSONのすべてのうち最低のもの。
私はthisを読みましたが、それは私を助けてくれないようでした。
私はビューでfactory_date
を変更するとビューモデルが更新されないため、オブザーバブルが適用されないことが分かります。
ご協力いただければ幸いです。上のjavascriptはコンパイルされたTypeScriptです。
編集:ここでは
は私がビュー内のコードにアクセスしています方法の例です:
<tbody data-bind="foreach: orderlines">
<tr>
<td data-bind="text: factory.name"></td>
<!-- ko foreach: milestones -->
<!-- ko if: factory_date == null -->
<td>
<span>TBA</span>
</td>
<!-- /ko -->
<!-- ko if: factory_date !== null -->
<td>
<div class="wrapper-wrapper">
<div class="btn btn-primary dateChanger">
<span data-bind="text: moment(factory_date.milestone_date).format('DD-MM-YYYY')"></span>
</div>
<div class="date-update-wrapper text-center">
<input type="text" data-bind="attr: {value: moment(factory_date.milestone_date).format('DD-MM-YYYY')}" class="form-control datetimepicker">
<a class="save-date btn btn-success" data-bind="click: function(){$root.saveDate(factory_date, $parent)}"><i class="fa fa-check"></i></a>
<a class="cancel-date btn btn-danger"><i class="fa fa-times"></i></a>
</div>
</div>
</td>
<!-- /ko -->
<!-- /ko -->
</tr>
</tbody>
私は問題を持っていた私は認識して作られた部分は、この部分だった:
data-bind="click: function(){$root.saveDate(factory_date, $parent)}"
シンプルなsaveDateメソッド(console.log(factory_date.milestone_date)
)を作成しました。ビュー(datepickerを使用)でビューを編集しても、デフォルトのJSONデータが返されました。
はあなたの関連するマークアップを投稿することができますデータバインドも同様ですか? –
私は、ビュー内の情報にどのようにアクセスしたかについて少し詳しい情報を編集しました。私はそれがあなたが意味していたことを望みますか? – k4kuz0