1

言い方が間違っていたらすみません、説明が難しいです。基本的に、指定された日付が横にあるアイテムのリストがあります。30 分以上経過している場合は、赤くなります。完全に機能しますが、リアルタイムではありません。アイテムが赤くなるのを確認するには、更新する必要があります。

{{#each callback in App.callbackController}}
    <tr>
        <td align="center" {{bindAttr style="callback.urgent"}}>{{callback.formatted_time}}</td>
    </tr>
{{/each}}

App.Callback = Ember.Object.extend({
    date_time: null,
    urgent: function()
    {
        current_time  = new Date().getTime();
        callback_time = new Date(this.get('date_time')).getTime();

        if(((callback_time - current_time) / 1000 / 60 * -1) > 30)
        {
            return 'color: #FFF; font-weight: bold; background: #'+Helpers.colours.red;
        } else {
            return 'color: #FFF; font-weight: bold; background: #'+Helpers.colours.green;
        }
    }.property('date_time')
});

緊急値を更新し続ける方法はありますか?

4

2 に答える 2

1

Richard Livsey は、インジェクションを介してすべてのコントローラーにフックされるアプリ全体の Clock モデルを基本的に追加する素晴らしいブログ投稿を書きました。次に、計算されたプロパティをクロック プロパティにバインドし、適切な時間に「起動」することができます。

于 2013-03-12T21:45:44.497 に答える
0

計算されたプロパティは「date_time」プロパティのみを調べています。この例では、アイテムが作成された時刻のように見えます。

おそらく、アプリのどこかに(意味のある場所で)「date_time_now」プロパティを追加し、それを計算されたプロパティに追加する必要があります。emberに「now」プロパティが組み込まれているかどうかはわかりませんが、setTimeout()を使用して自分で設定するのはそれほど難しいことではありません。

編集:

私の答えを読み直して、私がそれを説明することができなかったことに気づきました。計算されたプロパティはdate_time(変更されることはありません)のみを参照するため、計算されたプロパティはデフォルトでキャッシュされるため、一度評価され、その後キャッシュされます。date_time_nowプロパティを追加し、date_time_nowが変更されるたびに再計算を強制する更新。

于 2013-03-12T17:14:44.593 に答える