2011-09-07 7 views
1

j'ai un modèle de liaison comme suitl'accès aux propriétés viewmodel

<tbody id ="mytemplatetbody" 
     data-bind="template: {name: 'myTemplate', foreach: Items}"> 
</tbody> 

Les lignes de modèle ont un champ d'état dont la valeur peut être 1 ou 2 ou 3. Il y a trois cases à l'écran et en fonction de ce que la case (es) sélection par l'utilisateur, les lignes doivent être visibles.

Voici ce que j'ai fait: J'ai ajouté trois propriétés observables à viewModel et les ai liées aux trois cases à cocher. Je peux afficher ces valeurs comme suit:

<span data-bind="text: viewModel.checkBox1Selected()"></span> 

Question: Je ne suis pas en mesure de mettre tout si les déclarations de mon modèle, par exemple comme celui-ci ...

{{if viewModel.checkBos1Selected() }} 

... Quelle est donc la meilleur moyen ou de toute façon je peux accomplir ce que j'ai décrit ci-dessus?

Répondre

4

Une façon courante de faire ce genre de chose est de créer un DependObservable pour représenter vos lignes filtrées. Ensuite, liez votre modèle à cet objet DependObservable. Chaque fois que l'un de vos filtres observables change, les lignes filtrées seront réévaluées.

Voici un exemple: http://jsfiddle.net/rniemeyer/BXeCb/

Vous pouvez certainement faire le filtrage fonctionne cependant mieux pour votre application. J'ai utilisé la liaison cochée avec un observableArray pour contenir mes filtres, mais vous pouvez facilement utiliser votre méthode d'utilisation de trois propriétés observables sur votre modèle de vue.

+0

Merci de m'avoir montré le chemin. – unlimitedsprint

+0

Le filtrage fonctionne sur la base de la sélection de case à cocher parfaitement, j'ai un autre filtrage que je dois faire en plus des mêmes données. Lorsque l'utilisateur se connecte à cette application, les seules lignes qui doivent être affichées sont celles qui ont été créées par lui (nous avons créé par la colonne en DB), comment faire? – unlimitedsprint

+0

Que diriez-vous de quelque chose comme ceci: http://jsfiddle.net/rniemeyer/Yrxfe/? –

Questions connexes