如何观察Ember数据存储的变化?

时间:2015-07-07 03:48:15

标签: ember.js ember-data

我创建了这个简单的JsBin来演示我之后的事情。

JSBIN

我有一些Fixture数据,其中的每个项目都有一个名为isFavourite的布尔属性。 indexRoute只显示所有可用数据,第二部分显示最喜欢的项目。每个项目还有一个绑定到此isFavourite属性的类。如果它是最喜欢的,它会有红色文字。

有一个名为dashboard的第二条路线,它只显示商店的数据子集。还有一个按钮可以切换最喜欢的属性。切换时,更改将反映在索引路由上的类绑定中,但Favourites部分(仅仅是转发器)仍会显示旧数据。

如何为转发器建立绑定,以便根据isFavourite属性更改项目?

1 个答案:

答案 0 :(得分:1)

试试这个:

<ListBox Name="itemlist_listbox" SelectedIndex="{Binding Path=button_index, Mode=TwoWay}" 
         SelectionChanged="itemlist_listbox_SelectionChanged"  
         SelectedValuePath="Value" ScrollViewer.VerticalScrollBarVisibility="Visible"
         Foreground="#FF0F0101" Margin="0,2120,0,10" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Grid.Row="0"   Height="265">
                <Button x:Name="product_Name" Tag="{Binding }" Click="product_Name_Tap"  
                        LostFocus="product_Name_LostFocus_1" 
                        Background="White"  Height="72"  Margin="0,0,73,235"/>
                <toolkit:PhoneTextBox x:Name="Description" Text="{Binding itemlist_description}" 
                                      LostFocus="product_Name_LostFocus_1" 
                                      Background="White" Height="73" Hint="Description" TextWrapping="Wrap"  
                                      Margin="0,-235,10,235"/>
                <toolkit:PhoneTextBox x:Name="Discount" Text="{Binding itemlist_qty}"
                                      InputScope="Number" 
                                      LostFocus="product_Name_LostFocus_1"  
                                      Background="White" Height="70" TextWrapping="Wrap" Hint="Discount" 
                                      Margin="158,-320,185,83"/>
                <toolkit:PhoneTextBox x:Name="qty" InputScope="Number" Text="{Binding itemlist_discount}" 
                                      LostFocus="product_Name_LostFocus_1" 
                                      Background="White" Height="70" TextWrapping="Wrap" Hint="Qty" Margin="0,-320,340,83" 
                                      RenderTransformOrigin="0.625,0.5"/>
                <toolkit:PhoneTextBox x:Name="Price" InputScope="Number" Text="{Binding itemlist_price}" 
                                      LostFocus="product_Name_LostFocus_1" Background="White" 
                                      Height="70" TextWrapping="Wrap" Hint="Price" Margin="313,-320,37,83"/>
                <TextBlock HorizontalAlignment="Left" Margin="10,-160,0,0" Foreground="Black"  
                           FontSize="25" TextWrapping="Wrap" Text="Total Price : " 
                           VerticalAlignment="Top" Width="153"/>
                <TextBlock HorizontalAlignment="Left" Text="{Binding }" Name="Total_price" 
                           Margin="163,-152,0,0" Foreground="Gray"
                           FontSize="25" TextWrapping="Wrap" 
                           VerticalAlignment="Top" Width="256" Height="32"/>
                <Image x:Name="image" Height="50" Source="/Assets/Tiles/delete.png" 
                       Width="56" Margin="400,-675,0,0"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

这样做的原因是App.IndexController = Ember.Controller.extend({ favourites: function() { return this.store.filter('documenter', function(x) { ^^^^^^^^^^^^^^^^^ return x.get('isFavourite'); }); }.property('model') }) 会返回&#34; live&#34;随着事情的变化而更新的集合。

在你的JSBIN上为我工作。