Breeze で計算値を作成し、Knockout でバインドするのに問題があります。
ここからダウンロードできる NoDb サンプル プロジェクトを使用しています。Breezeドキュメントのエンティティの拡張に関する記事が私の主な情報源です。
todo.datacontext.js ファイルで、次の変更を行いました: (コードを配置した正確な場所に関するガイダンスを提供するために、最初と最後の行を含めました)
...
configureManagerToSaveModifiedItemImmediately();
metadataStore.registerEntityTypeCtor('TodoItem', function () { }, todoItemInitializer);
function todoItemInitializer(todoItem) {
todoItem.participantName = ko.computed(function () {
return 'John' + ' ' + 'Smith';
});
};
var datacontext = {
...
そして、Index.html に以下を追加しました。
...
<ul data-bind="foreach: todos">
<li>
<p data-bind="text: participantName" />
<input type="checkbox" data-bind="checked: isDone" />
...
ただし、次のエラーが発生します。
todo リストの取得中にエラーが発生しました: バインディングを解析できません。メッセージ: ReferenceError: 参加者名が定義されていません。バインディング値: テキスト: 参加者名
これを実行すると、次のことにも気付きました。
metadataStore.getEntityType('TodoItem');
登録しているのに、そのようなタイプは存在しないと言っています。
何か案は?