Knockout binding 'with an alias of' as'

I use knockout and am familiar with the foreach binding, where I can use the alias "how":

<ul data-bind="foreach: { data: categories, as: 'category' }">
  <li>
    <ul data-bind="foreach: { data: items, as: 'item' }">
      <li>
        <span data-bind="text: category.name"></span>:
        <span data-bind="text: item"></span>
      </li>
    </ul>
  </li>
</ul>

Is there any similarity to the "c" binding? I tried it with the following code, but I get an error:

Uncaught ReferenceError: Cannot handle the binding "using: function () {return {data: $ root.profileUser, as: 'profile'}}"

<div data-bind="with: { data: $root.profileUser, as: 'profile' }">
<form class="form-horizontal">
<div class="form-group">
  <label for="inputName" class="col-sm-2 control-label">Preferred Name</label>
  <div class="col-sm-10">
    <input type="text" data-bind="textInput: profile.PreferredName" class="form-control" id="inputName" placeholder="Preferred Name">
  </div>
</div>
+4
source share
2 answers

, as foreach , . , , Knockout (3.5.0) , let.

, :

ko.bindingHandlers['let'] = {
    init: function(element, valueAccessor, allBindings, vm, bindingContext) {
        // Make a modified binding context, with extra properties, and apply it to descendant elements
        var innerContext = bindingContext.extend(valueAccessor);
        ko.applyBindingsToDescendants(innerContext, element);

        return { controlsDescendantBindings: true };
    }
};
ko.virtualElements.allowedBindings['let'] = true;

:

<div data-bind="let: { profile: $root.profileUser }">
...
</div>
+8

with , foreach, $data . , .

<div data-bind="with: $root.profileUser">
<form class="form-horizontal">
<div class="form-group">
  <label for="inputName" class="col-sm-2 control-label">Preferred Name</label>
  <div class="col-sm-10">
    <input type="text" data-bind="textInput: PreferredName" class="form-control" id="inputName" placeholder="Preferred Name">
  </div>
</div>
0

Source: https://habr.com/ru/post/1653213/


All Articles