問題タブ [canjs-model]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
334 参照

javascript - CanJS を使用して、インスタンスが破棄されたときに Model.List からモデル インスタンスを自動的に削除する方法は?

destroyモデル インスタンスの呼び出しが、それが接続されている Model.List にどのように影響するかを理解するのに苦労しています。

ドキュメントには次のように記載されています。

can.Model.List が従来の can.List よりも優れている点の 1 つは、モデルを破棄すると、モデルがそのリストにある場合、リストから自動的に削除されることです。

ただし、このコードを実行すると:

コンソールに表示される内容は次のとおりです。

破棄を呼び出した後、要素がまだ Model.List にあるのはなぜですか? destroyedおよびremoveイベントがトリガーされないのはなぜですか?

私がデバッグしようとしている実際のコードでは、呼び出すとdestroyDELETE リクエストがトリガーされ、サーバー上でオブジェクトが期待どおりに削除されることに注意してください。ただし、Model.List からは削除されないため、関連付けられたビューからも削除されません。

0 投票する
1 に答える
678 参照

canjs - CanJS モデルを更新する方法

サーバーで実行されるジョブのリストを表すモデルがあります

タイマーでサーバーをポーリングして、ジョブの状態の変化を表示したいと考えています。

どうすればいいですか?

私のコントロールは次のようになります

私のモデル、これまでのところこのように見えます

0 投票する
3 に答える
173 参照

javascript - CanJSで遅延モデルの長さを取得するにはどうすればよいですか?

次のような構造のモデル遅延オブジェクトを取得しています。

ここに画像の説明を入力

このオブジェクト内にいくつのオブジェクトが存在するか (この場合は 3 つ) を調べるにはどうすればよいですか? を使用するObject.keys(myObject).lengthと、オブジェクト オブザーバーと _computeBindings、_bindings などの他のデータが含まれます。hasOwnProperty長さの計算中に使用しようとしましたが、目的の結果が得られませんでした。

私が理解できる1つの方法は、インデックスを反復処理して、次のように最後のインデックス値を取得することです:

このための API はありますか?

0 投票する
1 に答える
147 参照

javascript - canjs テンプレート モデルはまだ準備ができていません。データバインディング

テンプレートがレンダリングされる瞬間に準備ができていないオブジェクトのレンダリングに問題があります。したがって、データバインディングなしで空のビューをレンダリングしています。

データバインディングを保証するために遅延オブジェクトまたはその他の方法を使用する正しい方法は何ですか?

selectedProject を空のモデルで初期化しようとしましたが、これは少しダンプ方法のようです:

また、プロジェクトフェーズのようなプロジェクトのサブオブジェクトを使用する必要がある場合、これは問題を解決しません。

編集: プロジェクトのサブオブジェクトを待機するための非常に厄介な方法を見つけました。モデルの変更にハンドラーをバインドしたので、更新も機能するようになりました。これを行うためのよりエレガントな方法はありますか?

0 投票する
1 に答える
58 参照

promise - can.view を使用した can.Model を使用して動的に DOM にデータを入力するか、レコードがロードされたら

次の can.Model があります。

次のように、can.view に defered=CaseModel.findAll({sobject: new SObjectModel.Case()}) を設定する init メソッドを使用して can.Control を実装するにはどうすればよいですか。

this.element.html(can.view('recipes', Deffered));

そして、これらのレコードが口ひげテンプレートでどのようにループされるか: {{#each ???? }}

ありがとう

0 投票する
2 に答える
250 参照

canjs - canjs findOne遅延

model.findAll を使用して findAll のコールバック関数にコードを記述する代わりに、new model.List({}) を使用して同じことを達成できることを学びました。たとえば、jsfiddle --> http://jsfiddle.net/CRZXH/48/ .. この jsfiddle の例では、リストの実装は機能しますが、findOne は失敗します。

上記の例は正常に動作します。最初は people に空のオブジェクトが割り当てられますが、ajax 呼び出しが完了した後、 people 変数はリストとビューの更新で更新されます。

findOneの場合に同じことを達成するにはどうすればよいですか?

これは失敗します....

私は以下のように回避しました:

これは、findeOne ajax 呼び出しで asyn=false を追加した場合にのみ機能します。

0 投票する
2 に答える
79 参照

canjs - can.Model destroy with multiple parameters

私が制御できない API を使用しています。私はこのようなことをしたいと思います:

これは機能しません。canjs は単に破棄 URL を使用しません。関数を作成しようとしましたが、渡されるパラメーターは「id」だけです。これは本当の REST ではないと言うでしょうが、私は API に行き詰まっています。URL に複数のパラメーターを入れるたびに、URL は使用されません。

何か案は?

0 投票する
2 に答える
147 参照

canjs - JSON サーバーの応答を can.Model の「data」フィールドに配置する必要があるのはなぜですか?

CanJS.com では、JSON サービス自体から配列を返さないようにと書かれています。代わりに、次のようになります。

なぜこれが必要なのですか?また、配列のみに適用されるのでしょうか?それともすべてのオブジェクトに適用されるのでしょうか? たとえば、単一のオブジェクトの応答は次のようになりますか?

または、データ項目が 1 つしかない場合、そのdataフィールドはもう必要ありませんか? 例えば: