knock-out viewmodel de la propriété non définie
J'ai un simple foreach:
<div id="customersArea" data-bind="foreach: people">
<div class="section" data-bind="attr: { 'personid': PersonId }" >
<div class="sectionActions">
<div><a class="action" href="#" data-bind='click: $parent.removePerson'>Remove</a></div>
</div>
<div class="sectionText">
<span data-bind="if:LastName, text:LastName"></span>
<span data-bind="if:FirstName, text:FirstName"></span>
<span data-bind="if:MailingAddress">
<span data-bind="with:MailingAddress">
<span data-bind="text:StreetPartOne"> </span>
<span data-bind="text:StreetPartTwo"> </span>
<span data-bind="text:City"></span>
<span data-bind="text:PostalCode"></span>
</span>
</span>
<span data-bind="if:EmailAddress, text:EmailAddress"></span>
<span data-bind="if:MainPhoneNumber, text:MainPhoneNumber"></span>
<span data-bind="if:MobilePhoneNumber, text:MobilePhoneNumber"></span>
</div>
<div class="sectionOptions">
</div>
</div>
</div>
Je suis en train de faire en sorte que je peux lier à l'encontre d'un modèle {PersonId:33} et le reste sera juste pas rendu en cas de disparition. quand je l'ai essayer cela et d'autres façons d'obtenir
Uncaught Error: Unable to parse bindings.
Message: ReferenceError: MailingAddress is not defined;
Bindings value: if:MailingAddress
J'ai créé un simple jsfiddle pour tester:
Vous devez vous connecter pour publier un commentaire.
Donc, il ya quelques options que vous avez:
KO aura un problème lorsque vous essayez de lier contre les propriétés non définies, à moins qu'ils sont à côté d'un objet. Donc, vous pouvez ajouter un préfixe de vos diverses liaisons avec
$data.
et KO sera en mesure d'analyser vos fixations. Exemple: http://jsfiddle.net/rniemeyer/dLCL8/ Si vous savez que plusieurs des propriétés serons toujours ensemble, alors vous pouvez utiliser unwith
ouif
déclaration autour de ces options.Une autre de prendre sur la manipulation de "undefined" propriétés est de créer une liaison qui remplit ces propriétés lorsqu'ils sont absents. Regardez cette réponse. Il serait similaire, mais potentiellement avec le "texte" de la liaison. Exemple: http://jsfiddle.net/rniemeyer/dLCL8/4/
text
de liaison: jsfiddle.net/rniemeyer/dLCL8/4Utiliser le
$data
préfixe, KO peut l'analyserDe l'échantillon:
http://jsfiddle.net/baryon/NsuL7/1/