私はEmberの生の初心者です。アプリはスリープトラッカーです。私が今作成しようとしているのは、過去N日間に寝ていた平均時間数です。Emberのコントローラーの計算されたプロパティ
平均を計算するには、コントローラに計算されたプロパティを追加したいと思います。私はまだモデルがありません。なぜなら、アプリは生のままだからです。
// app/routes/home.js
import Ember from 'ember';
let events = [
{
"dow": 5,
"durationInSeconds": 29280,
"endAt": 1471087260000,
"startAt": 1471057980000,
"timezone": "America/Montreal"
},
{ ... }
]
export default Ember.Route.extend({
model() {
return events.sortBy("startAt").reverse();
}
});
// app/controllers/home.js
import Ember from 'ember';
export default Ember.Controller.extend({
averageNapDuration() {
console.log("model: %o", this.get('model'));
return 0;
},
averageNightDuration() {
// TODO
}
});
// app/templates/home.hbs
<table>
..
<tfoot>
<tr>
<td scope="row" colspan="3">Average nap</td>
<td class="duration">{{format-duration averageNapDuration}}</td>
</tr>
<tr>
<td scope="row" colspan="3">Average night</td>
<td class="duration">{{format-duration 22680}}</td>
</tr>
</tfoot>
</table>
マイformat-duration
ヘルパー関数は、受信した値のconsole.log
を行います
は、ここに私の現在のコードです。平均を表示するときは、値の代わりに関数を受け取るformat-duration
です。
また、コントローラーでconsole.log
コールが表示されませんでした。ハンドルバーテンプレートに
は、私が使用してみました:
{{format-duration averageNapDuration() }}
をこれは構文エラーを返し:別の試験として
Error: Parse error on line 48:
...">{{format-duration averageNapDuration()
-----------------------^
Expecting 'CLOSE_RAW_BLOCK', 'CLOSE', 'CLOSE_UNESCAPED', 'OPEN_SEXPR', 'CLOSE_SEXPR', 'ID', 'OPEN_BLOCK_PARAMS', 'STRING', 'NUMBER', 'BOOLEAN', 'UNDEFINED', 'NULL', 'DATA', 'SEP', got 'INVALID'
を、Iは、計算プロパティを使用する私のコントローラを変更:
averageNapDuration: Ember.computed.sum('@each.durationInSeconds')
今回は、format-duration
には、0私は、テンプレートが少なくともコントローラーと正しく話していることを確認します。
フィルタリングされた配列の計算されたプロパティの例はどこにありますか?整数の合計を計算するには、上記のコードで何を変更する必要がありますか?
計算されたプロパティを使いたいのであれば、 'Ember.computed'や' function(){} .computed'の構文を使って、それらを書く方法を読んでみませんか? [ドキュメントは十分明確です](https://guides.emberjs.com/v2.3.0/object-model/computed-properties/)。 –
Wherはフォーマット期間ヘルパーですか?私はそれを理解することが問題の一部だと思う。あなたはこれの底に到達するために単純化されたember-twiddleを作成する必要があります。 – sheriffderek
@ sheriffderekの場合、format-durationヘルパーは、現在のディスカッションには重要ではありません。これは、すでに正しい値を正しくフォーマットしています。問題はこのTwiddleに公開されています:https://ember-twiddle.com/2596daefabd8a1e2d3439465b6f0df45。 nap関数はプレーンな値を返し、生成されたHTMLに誤って表示されます。一方、night関数は計算値を返し、正しく表示されます。昼寝はしないが、夜間ログはコンソールを見てください。私は、関数を宣言し、テンプレートから呼び出されたときに関数を実行できるようにすることを期待していました。 –