これは以前に尋ねられたと確信していますが、残念ながら見つけることができません-正しい方向に私を向ける助けがあれば大歓迎です.
ビュー/ビュー モデルを Durandal で読み込んでいます。Activate メソッド中に、単一のレコードを取得して表示するように呼び出しています。レコードを取得しています (XHR 応答を確認し、すべてのデータが正常に返されます) が、データを表示する準備が整う前にビューが読み込まれているとしか思えません。JS エラーはなく、エラーはまったくありませんが、データが表示されるべきであることを知っていても、画面の真ん中に大きな空白があります...
ビューモデル:
define(['durandal/system', 'services/logger', 'services/datacontext'], function (system, logger, datacontext) {
var aForm = ko.observable();
var initialized = false;
function activate(routeData) {
var id = parseInt(routeData.id);
return refresh(id);
};
function refresh(id) {
return datacontext.getaFormById(id, aForm);
}
var vm = {
activate: activate,
aForm: aForm,
title: "THE TITLE DISPLAYS JUST FINE"
}
return vm;
});
意見 :
<h3 class="page-title" data-bind="text: title"></h3>
<div class="container-fluid" data-bind="with: aForm">
<div class="row-fluid">
<div class="span12">
<strong>Testing</strong>
<strong data-bind="text: id"></strong>
</div>
</div>
<h2 data-bind="text: description"></h2>
<h2 data-bind="text: checkType().description"></h2>
</div>
私は強力なテストを投入しましたが、レンダリングすらせず、タイトルだけがレンダリングされます。誰かが私を正しい方向に向けることができますか? フィドルを作成しますが、ViewModel でデータをハードコーディングすると機能します。
編集 :
もう少し掘り下げた後、特に data.entity 戻り値の型で、オブジェクトを適切に返していない可能性があります。これにより問題が発生しますか?
var getaFormById = function (aFormId, aFormObservable) {
var query = EntityQuery.from('aForms')
.where('id', '==', aFormId);
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
if (aObservable) {
aObservable(data.entity);
}
logger.log('Retrieved selected [aForm] from remote data source', data, system.getModuleId(datacontext), true);
}
}