2017-09-20 12 views
0

ビュー内の複数のリストにバインドされた項目のリストを持つクラスがある場合、要素が変更されたときにビューをリフレッシュするにはどうすればよいですか?フィルタリングされたaurelia repeat.forバインディングをリフレッシュする方法

古いアイテムを削除して新しいアイテムを追加する、予定を上げる、など何かを実行しますか?

export class Model { 
    items: Item[]; 
    filter1 = x => x.isActive; 
    filter2 = x => x.Value > 5; 

    modifyItem(item) { 
    item.isActive = true; 
    item.Value = 22; 
    } 
} 


<template repeat.for="item of items | filter:filter1">...</template> 
<template repeat.for="item of items | filter:filter2">...</template> 
あなたは何かが変更されたことを通知するために signal binding behaviorを使用することができ、フィルターをリフレッシュする必要

答えて

1

<template repeat.for="item of items | filter:filter1 & signal:'item-modified'">...</template> 

そして、あなたのコンポーネントで:

import {BindingSignaler} from 'aurelia-templating-resources'; 
import {autoinject} from 'aurelia-framework'; 

@autoinject() 
export class Model { 
    items: Item[]; 
    filter1 = x => x.isActive; 
    filter2 = x => x.Value > 5; 

    constructor(private signaler: BindingSignaler) { } 

    modifyItem(item) { 
    item.isActive = true; 
    item.Value = 22; 
    signaler.signal('item-modified'); 
    } 
}