問題タブ [ember-app-kit]
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.
jquery - ember アプリのテスト - ember.js find() ヘルパーの受け入れ可能なセレクター
私の最初の ember.js アプリをテストしようとしています。ember アプリ キットを使用します。
qunit がセレクターでどのように機能するかに困惑しています (jquery セレクターが機能すると想定していましたが、ほとんどの場合、機能します...)。
私のハンドルバーには次のコードがあります:
href
また、適切なリンクの存在をテストし、リンクをクリックして、クリック後に現在の URL とルートを確認するつもりです。
したがって、私のテストは次のとおりです。
注: EAK のこの PRのヘルパーを使用currentRouteName
していますが、意図したとおりに機能します。currentURL
私のテストは、click(link)
一部で失敗しError: Element [object Object] not found.
ます。
セレクターをクリックに直接渡そうとするとclick("a[href='#/locations/new']")
、エラーが発生しますElement a[href='#/locations/new'] not found.
。特殊文字 # をバックスラッシュまたは二重バックスラッシュでエスケープしようとしても、同じ結果になります。
当分の間、クラスごとに div を取得することで問題を軽減しました-次のように:
そして、テストはパスします。
質問:
- href で見つかった同じ変数で "click()" を呼び出すことができないのはなぜですか?
- 実装に対して合理的に無関心でテストしていますか? (まあ、クラスごとに要素を見つけるという回避策は、その法案に適合しませんか?)
前もって感謝します!
アップデート
kingpin2kのコメントによると、選択したアサーション メソッドが間違っていたため、テストに合格していました。空の配列のok(foo, 'bar')
場合は合格します (結果がない場合に返されます)。Ember API ドキュメントでは、 findWithAssertを使用するように案内されましたが、などとリンクしております。foo
find
href
厄介なことに、 JS コンソールでjQuery ドキュメント[attribute='value']
ごとに jquery セレクターを使用すると機能します。そして、ember-testing でのfindとfindWithAssertの実装は、セレクターを jQuery に渡すだけのようです...
なぜ失敗するのですか?知らない。GLaDOSが説明したように、スピーディーなものが入り、スピーディーなものが出てくると考える人もいるでしょう-セレクターをjQueryに渡すだけで、jQueryが返すように返されますが、明らかにそうではありません.
その場合は、クラス セレクターの使用に固執しますが、それは実装に影響を与えます。
ember.js - ember app kit: 一部のテスト関数が定義されていません
ember アプリ キットに基づいて、最初の ember アプリを作成します。
移行後に現在のルートをテストしたかったのですが、ember docs で必要なものだけを見つけました -とヘルパーcurrentRouteName
関数。currentURL
currentPath
ただし、これらの関数を使用すると、"ReferencError: currentRouteName is not defined"
.
同じことの初期実装があると思われるこのプルリクエストに出くわしました-しかし、この機能を適切なemberに追加することを支持して閉じられました...当分の間、このPRからコードをコピーしましたが、実際に取得します拾って私のテストに合格しました。
質問: ember.js のコピーで定義されているすべての関数をテストで利用するにはどうすればよいですか? これらのルート ヘルパー関数は関数と一緒に定義されてvisit
おりclick
、私のテストでは問題なく検出されているようです。または、私のテストはこれらの機能を別の場所から取得していますか?
ember.js - Ember データ初期化子の順序
emberデータライブラリでは、初期化中に、イニシャライザ「injectStore」が「ストア」イニシャライザの前に呼び出されるのはなぜですか(したがって、ストアが登録される前)?
https://github.com/emberjs/data/blob/master/packages/ember-data/lib/initializers.js#L49
--
https://github.com/emberjs/data/blob/master/packages/ember-data/lib/initializers.js#L97
最初に登録してから注入するべきではありませんか?
javascript - Ember App Kit に頭を悩ませる - プレーンな Ember での作業との違い
私は、ember app kit を使い始め、そのガイドを読んでいます。ただし、通常のアプリと、名前空間として使用されるグローバル変数 (App など) にすべてを詰め込むのではなく、Ember App Kit が ES6 モジュールを使用してさまざまなビットを構造化するこの方法との違いに頭を悩ませています。
この側面はあまり明確に説明されていないことがわかりました。
- Ember は、自動生成モデル、ビュー、ルート、およびコントローラーにその魔法をどのように適用しますか?
- それらをどこで見つけることが期待されていますか?
- どの命名規則に従う必要がありますか?
- テンプレート、ルート、またはコントローラーを作成したのに、Ember がそれを検出/検出せず、その場所にデフォルトのテンプレートを生成するだけの場合、どこを見ているかをどのように見つけますか? または、この状況でデバッグしますか?
- Ember App Kit を使用した開発と比較して、標準の Ember アプリ開発では、これらがどのように異なるのでしょうか?
事前に大歓迎です!
編集 (20140506):
これらのリソースは、ES6 モジュールと EAK を非常によく説明しています。
ember.js - Ember.js 値でリスト/テーブル内のアイテムにジャンプ/選択
現在Ember.jsをやって勉強中。Ember App Kitの使用。
私は基本的な関係を持っています-多くの「アイテム」を持つモデル「注文」。次の .hbs で注文とアイテムを表示します。
コントローラーは、これら 2 つのアクションを処理するだけです。
そしてシンプルモデル。
order.hbs からのクエリ アクションを処理する注文コントローラー。
これはすべて正常に機能します。
次の機能を追加したいと思います: order.hbs の入力フィールド。SKU を入力すると、対応するアイテムが編集用に (ダブルクリックを使用したようにインラインで) 開きます。どのように、どこで (どのコントローラーまたはビューで) これを行うのですか?
私の現在の ember.js の理解は、それが ArrayControllers またはビューと関係があることを示唆しています。しかし、私は同様の実装を見つけていません。
更新: isEditing をモデルからコントローラーに移動し、より適切な場所に移動しました。例を「投稿とコメント」から「注文とアイテム」に変更しました。
UPDATE2: 入力フィールド「検索」を追加しました。注文コントローラーでその値を取得できます。しかし、ここがアイテム検索を処理する場所だとは思いませんよね?
ember.js - ember アプリ キット テンプレートでネストされたディレクトリ内のコンポーネントにアクセスする方法
/components/some-dir/some-component.js にコンポーネントがあり、それを .hbs テンプレート ファイルで使用しようとしています。
しかし、ハンドルバーはエラーをスローします。ember アプリ キットのドキュメントには、「/」は「.」に変換されると記載されています。エイリアスを使用するには:
しかし、コンポーネントで同様に動作させるのに苦労していたので、適用されるかどうかわかりませんでしたか?
javascript - Ember アプリ キット アプリケーション ビュー didInsertElement が 1 回だけ起動される
こんにちは、私はEmber アプリ キットdidInsertElement
を使用しています。ルートを変更するたびに起動する必要があります (子ビュー - アウトレットでのビュー)。グローバル アプリ DOM 準備完了イベントのようなものが必要です。
マビレインの解決策を見つけましたが、うまくいきません。
これが私のものapp/views/application.js
です:
アプリを実行すると が起動しますが、ルートを変更すると (リンクをクリック)、アプリケーション ビューイベントdidInsertElement
がトリガーされません。didInsertElement
アプリケーション ビューが変更されないことはわかっていますが、子ビューを変更するたびに起動するものが必要です。それとも、アーキテクチャを台無しにして、別の方法で行っていますか?
助けてくれてありがとう。