問題タブ [jsviews]
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.
jsrender - 代替アプローチ
初心者の質問で申し訳ありません。もっと良い方法があるはずだと感じていますが、私はそれを見ていません。ID を探すためにボタン クリックでループを実行する必要はありません。削除するインデックスを渡したいだけです。
ここに私がしなければならないことを考えています
html
js
これが私がやりたいことです
html
js
javascript - JsViewは未定義のプロパティ '_cId'を読み取れません
動的に作成されたアイテムのプロパティの変更を監視することに関連して、奇妙な動作が発生しています。
シナリオ: ユーザーが連絡先を作成するページがあります。彼らが作成する連絡先の数はさまざまです (いくつかの条件によります)。
私の現在の解決策: 連絡先テンプレートを作成しました。ユーザーが [追加] ボタンをクリックするたびに、Observable API を使用して新しい連絡先オブジェクトを追加します。問題は、連絡先を削除しようとすると、連絡先が基になる配列から削除されますが、UI からは削除されません。さらに、「未定義のプロパティ '_cId' を読み取れません」という例外がスローされます。
ここに私のJavaScriptコードがあります:
例外を示すために JsFiddle を作成しました。誰かがそれを解決するために何をすべきかについてのガイダンスを提供してくれることを願っています。
javascript - jsviews - 配列要素のフィールドを更新する
jsviews に問題があります。要素の配列をバインドしたい。各要素はオブジェクトです。要素は動的に追加されます。各要素の 1 つのフィールドの値は、別のフィールドに基づいて計算されます。毎回配列を更新せずにどうすればよいですか?
js:
html:
問題を説明するjsfiddleを作成しました。
jquery-templates - view() は空のビューを返します
http://www.jsviews.com/download/jsviews.js (JsRender、JsObservable、および JsViews を含む) から jsview.js を含めました。また、レンダリングされた行を含むhtmlテーブルがあります。
そして、私は3つのケースを実行する必要があります:
- 挿入する前にいくつかの操作(初期化など)を行った後、古い行を削除し、新しいレンダリングされた行をテーブルに挿入します
- 行を削除しないでください。挿入する前にいくつかの操作(初期化など)を行ってから、いくつかの行の後に新しいレンダリングされた行を挿入するだけです
- イベント "
onclick
" で、行データを取得する必要があります:var rowData = $row.view().data;
render を使用する場合:レンダリングされた行で何でもvar $rows = $(compiledTmpl.render(dataArray, helperObj));
できます。それらを初期化して、いくつかの行の後に挿入できます。しかし、イベント「onclick」が発生すると、空のデータが取得されます( rowData
)。なぜ?
リンクを使用すると、レンダリングされた行を取得compiledTmpl.link($table, dataArray, helperObj)
できません。なぜ?それらを初期化して、いくつかの行の後に挿入することはできません。しかし、イベント「onclick」が発生すると、空のデータが得られません( rowData
)。
私の場合はどうすればいいですか?
更新: https://jsfiddle.net/chdcfsnv/4/
更新 2 : まもなく (そして単純化して)、新しい行をレンダリングしたいと思います。既存の行の後に追加します。後で、リンクされた行データを取得できるようにする必要があります。他の機能は今のところ必要ありません。
jsviews - jsviewsリスト要素を選択する方法
ユーザーのプロジェクトのリストを表示しようとしています。選択リストで「キー」ユーザー プロパティの現在の値を選択する必要がありますが、これは機能しません。
ここに私のコードフラグメントがあります:
http://jsfiddle.net/er2f1rw3/1/
これが機能しない理由を理解するのを手伝ってくれる人はいますか?
view-helpers - for ループ内の JsViews/JsRender 一時/コンテキスト ヘルパー変数
後で別の for ループ内で使用するために、一時的/コンテキスト変数を for ループに格納しようとしています。http://borismoore.github.io/jsrender/demos/step-by-step/11_accessing-parent-data.htmlを参考にしました。
インスタンス配列内の各データ オブジェクトには、特定の値に設定された templateId プロパティがあり、テンプレート配列内の各オブジェクトには id プロパティがあります。
最初の問題は、デバッグ {{:~templateId}} が表示されないことです。変数が割り当てられていないようです。
テンプレート マークアップ内で ~helper セットのみを使用した後、「ビューモデル」でヘルパーを明示的に定義しようとしました
forループで設定しないと値が出力されるようになりましたが、forループで設定すると再び消えます。
次の問題は、ヘルパーがインスタンス ループの子ビューでのみ使用できるようにする必要があるため、~root スコープの for ループで ~templateId ヘルパーを使用できないことでしょうか?
最終的な目標は、選択で正しい値を選択することです。他の解決策が利用可能な場合は、教えてください。
jsrender - オブザーバブルが変更されたときにビューが更新されない
リストのコンテナが更新されたときにリストを再レンダリングしようとしています:
$.observable(data).setProperty("selectedScenario", scenario) を使用すると、何も変わりません。http://jsfiddle.net/ep76m4af/1/で、これを実際に見ることができます。ObserveAll は、データ自体が更新され、イベントが適切に発生したことを示しています。