Existe-t-il un moyen de vérifier si applyBindings
a été appelé ou non pour une zone de page?
Il semble que knockout n'aime pas que applyBindings
soit appelé plusieurs fois sur la même page.
Knockout 2.0 a deux fonctions que vous pouvez utiliser à cet effet. ko.dataFor
et ko.contextFor
prendre un nœud et renvoyer les données Knockout qui seraient disponibles pour la liaison à cette étendue (dataFor) ou le contexte de liaison entier à cette étendue (contextFor), qui comprend $data
, $parent
, $parents
, et $root
.
Vous pouvez donc faire quelque chose comme:
var isBound = function(id) {
return !!ko.dataFor(document.getElementById(id));
};
Voici un exemple: http://jsfiddle.net/rniemeyer/GaqGY/
Cependant, dans un scénario normal, vous devriez vraiment chercher à appeler ko.applyBindings
une seule fois sur votre page. Cela dépend cependant de ce que vous essayez d'accomplir. Jetez un oeil à cette réponse pour quelques suggestions sur la façon de gérer plusieurs modèles de vue: Exemple de modèle knockoutjs pour les applications multi-vues .
En règle générale, vous feriez un <div data-bind="with: mySubModel">
et lorsque mySubModel
est renseigné, cette zone apparaît et est liée.