简体   繁体   中英

Knockout containerless 'with' binding not working

This containerless with binding doesn't set the bindingContext as I would expect; it's still set to the containing parent of ladder.

<!-- ko with:ladder -->
<table>
    //Context here is the $root object, not $root.ladder
    //some foreach binding here
</table>

<a  href="#" data-bind="click: addPages">Add 4 pages</a>
<!-- /ko -->

This containerful method works fine though.

<table class="ladder-table" data-bind="with:ladder">
    //the context is correctly set to ladder in this instance
    //some foreach binding here
</table>
<br />
<a  href="#" data-bind="click: ladder.addPages">Add 4 pages</a>

Anyone know what's up with that? Google didn't give any results.

The problem is with Durandal, not Knockout, as this answer explains: containerless statements of knockoutjs is not working in hottowel SPA?

In short, Durandal allows only one root element per view.

goodView.html

<div>
    <--ko foreach:stuff-->
      //stuff
    <--/ko-->
</div>

badView.html

<div>
   <stuff/>
</div>
<--ko foreach:stuff-->  //these elements are stripped out
  //stuff
<--/ko-->

Thanks @nemesv

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM