問題タブ [bindonce]
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.
javascript - bo-html と bo-text の違い
bindonceディレクティブのドキュメントを読んでいるときに、bo-html
との違いは何だろうと思いbo-text
ます。
bo-html
:
「マークアップ」を評価し、要素内の html としてレンダリングします
bo-text
:
「テキスト」を評価し、要素内のテキストとして出力します
したがって、このコードが機能すると予想しました。
しかし、私はこれを得ました:
<strong>
基本的なマークアップですね。
bo-text
これが機能しない場合 (おそらく構文の問題..)、との本当の違いは何bo-html
ですか?
javascript - 一度バインドする効率的な方法ですが、アイテム全体を更新できます
無限スクロールで表示される 1000 項目のリストを考えてみましょう。
各項目には、個人の名、姓、気分が表示されます。(簡単にするために)
最初は、更新を聞きたくありませんでした。
したがって、優れたangular-bindonceディレクティブ、またはそれ以上に優れているのは、Angular 1.3 のワンバインディング機能がうまく機能したことです。
ここで、プルして更新するコンポーネントを作成し、アイテム全体を更新できるようにしました。
ただし、一度バインドすると(ページをリロードしないため)、リスト全体で更新が考慮されませんでした。
angular-bindonce を使用して、私は現在これを持っています:
pull-to-refresh は、この関数をトリガーします。
質問は:
プルツーリフレッシュがトリガーされた場合にのみ、すべてのデータをリフレッシュする方法はありますか?
この場合、この 1 バインディングを維持できるため、膨大な人のリストを処理する際のパフォーマンスが大幅に向上します。
今までは、Angular の自然な方法である双方向バインディングを使用せざるを得ませんでした。
より一般的には、いくつかのイベントがトリガーされたときにのみ更新する必要がある無限スクロールの巨大なリストを処理する方法は?
angularjs - Angularjs - 遅延読み込みを使用して1つのboクラスを1つのngクラスとマージする方法は?
bindonce を使用する前は、angularjs のバージョン 1.3+ に非常に混乱していますが、現在は「::」を使用して遅延読み込みを行っています。
複数の ng-class の 1 つのクラスのみをバインドする方法が見つかりませんでした。
これは私の以前のコードでした:
: ng-class" :: {'tuto': user.tutorial}" を使用し、2 番目の ng-class を保持する必要があります。
bind である 1 つの ng-class と遅延読み込みを使用して 1 つの bo-class をマージするにはどうすればよいですか?
ありがとうございました !
javascript - AngularJS条件付きバインドワンス?
私は現在、任意の次元の編集可能なテーブルを表示する必要があるプロジェクトに取り組んでいます。私は AngularJS を使用していますが、テーブルが非常に大きくなる可能性があるため、何らかの形式のバインド ワンスを使用しないと処理が遅くなると予想されます。問題は、私が知る限り、bind-once は絶対的なものです。現在編集中の行のすべてのウォッチャーを実際に保持するか、少なくとも元に戻したいのです。
これが私が現在これをどのように行っているかの基本的な考え方です。
行のさまざまな識別子から文字列キーを生成しています。項目に編集フラグが立てられると、コントローラはその項目をコピー用に切り替え、そのキーを変更して、最終的にトランザクション ロック データとなるものを含めます。これにより、ng-repeat で置換がトリガーされ、次に tr が置換された行データで構築されるときに、スコープはそのまま残り、編集時に更新されます。
どういうわけか、それは実際に機能します(とにかく今のところ)。小さなリストの 500 人以上のウォッチャーから 100 人以下に減り、残っているのはほとんどがトップレベルのコントロールなので、うまくスケーリングされることを願っています。また、スコープがなくなっても、ng-clickリスナーなどを保持して適切にクリーンアップしているようです。
しかし、それは私が簡単にタイプするだけでうんざりした一種のハックであり、私よりもこのライブラリをよく知っている正気な人々に嘔吐を誘発する可能性があると感じています. 同じことを行うためのよりクリーンで安全な方法があるかどうか疑問に思っていました。私が探しているのは、条件付きで一度バインドするか、要素/スコープをそれ自体とそのすべての子の $digest をスキップして、公開されたフラグに基づいてスキップするより良い方法です。
ミート クリーバーをスコープに持ち込んだり、Angular で回避したいと思っていたすべての jQuery ガベージを手動で再アタッチしたりしないで、これを行う方法はありますか?
javascript - ngRepeat のバインド
ng-repeat オブジェクトでネイティブ bindonce を使用すると、どのような影響がありますか? 例えば:
これは、「もの」のすべてのアイテムがウォッチャーから削除されたことを意味しますか? それとも、このように繰り返しのすべての子バインドに bindonce を適用する必要がありますか?
angularjs - 複数の条件を持つ Angular ng-if を持つことは可能ですか? いくつかは一度バインドされ、いくつかは双方向ですか?
私の質問は、で複数の条件を使用できるかng-if
どうかではなく、ng-if
一部の条件のみを一度バインドして、他の条件が更新を監視できるかどうかです。
簡単な例として、名前を一度バインドしたいが、更新を監視したいトグル状態プロパティがある場合:<span ng-if="::page.name === 'something' && page.viewEnabled">Correct page, and the view is enabled!</span>
ブール値であると仮定するように切り替えるとpage.viewEnabled
、スパンが消えると予想されます。そうではないようです (Angular 1.3.11 を使用)。
セットアップのワンタイム バインディング::page.name
は、式全体を 1 回バインドされるものとして設定しますか?
前もって感謝します!
編集:私が興味を持っているのは、同じng-if
に複数の条件があり、1 つが一度バインドされ、もう 1 つがバインドされていない場合です。私が見ているのは、一度バインドされたものがある場合、他の変更はng-if
ステートメントに影響しないということです。
angularjs - ウォッチャーを作成せずにオブジェクトをカスタム ディレクティブに渡しますか?
HTML パラメータを介して渡された 2 つのオブジェクトにバインドすることにより、分離されたスコープを作成するカスタム ディレクティブ (「再利用可能なコンポーネント」) を作成しました。ドキュメントにこれらのコンポーネントが最大 600 個あるため、すぐに問題が発生します。これにより、1200 のウォッチャーが発生し、パフォーマンスが低下します。これらのウォッチャーは必要ありません。オブジェクトを渡すときの「バインド ワンス」機能だけです。これを達成する方法 (または回避策) はありますか? または、コードを再設計する必要がありますか?
(オブジェクトではなく、1 つまたは複数の文字列としてデータを渡すことは、望ましくないオプションです。)
angularjs - ng-repeat によるバインド
Bindonce
のパフォーマンスを改善するために使用しましたng-repeat
。
しかし、私には 1 つの問題があります。使用されるコレクションはng-repeat
少し後でデータで満たされます (API からの要求データには時間がかかります) Bindonce
。
サーバーからの応答を待ってからバインドするように指定するにはどうすればよいですか?
コード例:
コントローラーには配列があります$scope.requests = [];
工場で初期化されます
私は約束について赤くなり、このコードが役立つと思いました:
しかし、私はエラーを受け取ります
angular.js:11655 TypeError: CurrentUserData.getRequests(...).then は関数ではありません