私はAurelia JSの学習を始めました。問題にぶつかりました。AureliaJS - divまたはJavaScriptからのルートにナビゲートしますか?
私としてapp.js
の私のルートを持っている:mainpage.html
で、私はこれを使用、場合
configureRouter(config, router){
config.title = 'TEST';
config.map([
{ route: ['','main'], name: 'main', moduleId: './mainpage', nav: true, title:'Main' },
{ route: 'info', name: 'info', moduleId: './info', nav: true, title:'Info' }
]);
this.router = router;
}
:
<div class="button" route-href="route: info;">Go to Info</div>
を...その後何も起こりません。私もまた追加:
<div class="button" route-href="route: info;" click.trigger="route: info;">Go to Info</div>
...私はau run
のクラッシュを取得します。しかし、私が代わりに<a>
要素を使用している場合:
<a route-href="route: info;"><div class="button">Go to Info</div>
...クリックで[ルーティング/ナビゲーションが正常に動作します - しかし、私のCSSスタイルは完全に台無しにされました。私はむしろこれのために特に<a>
を書いていないでしょう。
だから、最初の質問:
- は
<div>
要素からのルートに移動することは可能です。もしそうなら、どのように?
Iはまた、(Aurelia.io: how to navigate to route通り、Error: ENOENT: no such file or directory src/aurelia-configuration.js · Issue #64 · Vheissu/aurelia-configuration · GitHubをも参照)、JavaScriptから直接これを実行しようとしました。そうmainpage.html
に、私は、この持っている:
<div class="button" click.trigger="goInfo()">Go to Info</div>
をそしてmainpage.js
import { Router } from 'aurelia-routing';
//~ @inject(Router)
export class Main {
static inject() { return [Router]; }
constructor(router) {
this.router = router;
}
goInfo() {
alert("Go Info");
}
}
に@inject(Router)
はinject
たので、私はチュートリアルのようstatic..
構文を使用していないような何かで失敗します。
私がimport { Router } from 'aurelia-routing';
の部分を持っていない限り、私はgoInfo()
を見ることができます。
...
{ uid: 11,
name: 'writeBundles',
branch: false,
error:
{ [Error: ENOENT: no such file or directory, open '[full project path]/src/aurelia-routing.js']
errno: -2,
code: 'ENOENT',
...
...と私もaurelia_project/aurelia.json
に追加した:しかし、すぐに、私はaurelia-routing
一部を追加すると、私が手
...
"dependencies": [
...
"aurelia-route-recognizer",
"aurelia-router",
{
"name": "aurelia-router",
"path": "../node_modules/aurelia-router/dist/commonjs",
"main": "index"
},
"aurelia-task-queue",
...
を...それでも私は、ファイルが見つからない」取得します」...どういうわけか、インポートはまだそのファイルがnode_modules/aurelia-router/
だから、2番目の質問にされている場合でも、src/
内のファイルを見つけることを主張している:
- JavaScriptからルートを実行/ナビゲートするにはどうすればよいですか?私はむしろ(
location.assign('#/info');
のように)URL経由で動作しません、注意してください
EDIT:ちょうど 私は別の場所からコピーし
mainpage.js
コードスニペットのように、それはもうaurelia-routing
と呼ばれていませんがわかった - しかし、それaurelia.js
が示すように、 は現在aurelia-router
と呼ばれています。だから、僕はimport { Router } from 'aurelia-router';
にmainpage.js
でインポートを変更 - そして、あなたはaurelia.js
でカーリー かっこ{
("name": "aurelia-router",
...一部)との間に挿入する必要はありません -mainpage.js
のgoInfo()
ナビゲーションのために 、その後this.router.navigateToRoute("info");
作品を。ではなく、別 JS機能... EDIT2で、属性だけでルーティングを使用して ナビゲートするためのdivのクリックを得ることが可能であるならば、私はまだ知りたい:おそらく関連:Aurelia delegate vs trigger: how do you know when to use delegate or trigger?:
Aureliaのデリゲートバインドの コマンドでバブルのイベントのみを使用できます。 blur、focus、load、unloadイベントはバブルではありません。 これらの イベントにサブスクライブするには、trigger bindingコマンドを使用する必要があります。 ...
a
、button
、input
、select
以外の要素では、iOSでバブルイベントが発生しません。div
のような非入力要素 をクリックして購読していて、iOSをターゲットにしている場合は、 というトリガーコマンドを使用します。詳細情報 here およびhere
あなたはおそらくあなたのボタンクラスを更新する必要があります。 divに縛られるべき理由はありません。 – powerbuoy