解決しました!ノックアウトの問題(間違ったバインディング)でした。しかし、コード全般 (dataservice、viewmodel など) について議論したり、コメントしたりするのが好きな人がいるかもしれません。
Breeze サンプルを作成しようとしました。ここでは、データベース レコードを 1 つ ( fetchEntityByKeyを使用して) 取得し、更新用に表示してから、保存ボタンを使用して、変更をデータベースに書き戻します。それを機能させる方法がわかりませんでした。
私はデータサービス(「クラス」)とビューモデル(「クラス」)を持ち、ビューモデルをノックアウトでビューにバインドしようとしていました。
誰かがサンプルを提供したり、ヒントを提供してくれたりすると、とても感謝しています。
ありがとう、ハリー
var dataservice = (function () {
var serviceName = "/api/amms/";
breeze.NamingConvention.camelCase.setAsDefault();
var entityManager = new breeze.EntityManager(serviceName);
var dataservice = {
serviceName: serviceName,
entityManager: entityManager,
init: init,
saveChanges: saveChanges,
getLocation: getLocation
};
return dataservice;
function init() {
return getMetadataStore();
}
function getMetadataStore() {
return entityManager.fetchMetadata()
.then(function (result) { return dataservice; })
.fail(function () { window.alert("fetchMetadata:fail"); })
.fin(function () { });
}
function saveChanges() {
return entityManager.saveChanges()
.then(function (result) { return result; })
.fail(function () { window.alert("fetchEntityByKey:fail"); })
.fin(function () { });
}
function getLocation() {
return entityManager.fetchEntityByKey("LgtLocation", 1001, false)
.then(function (result) { return result.entity; })
.fail(function () { window.alert("fetchEntityByKey:fail"); })
.fin(function () { });
}
})();
var viewmodel = (function () {
var viewmodel = {
location: null,
error: ko.observable(""),
init: init,
saveChanges: null
};
return viewmodel;
function init() {
return dataservice.init().then(function () {
viewmodel.saveChanges = dataservice.saveChanges;
return getLocation();
})
}
function getLocation() {
return dataservice.getLocation().then(function (result) {
return viewmodel.location = result;
})
}
})();
viewmodel.init().then(function () {
ko.applyBindings(viewmodel);
});