Странное поведение Knockout
От: senglory  
Дата: 07.10.16 20:56
Оценка:
Вот мой HTML:

<div id="ctlAlert" class="alert error-message">
<ul id="ctlAlertUL" data-bind="foreach: allErrors">
<li data-bind="text: $data" class="text-danger"></li>
</ul>
</div>

<button id="btnErr1">Err1</button>
<button id="btnErr2">No ERR</button>

Вот скрипт:
<script>


        $(document).ready(function () {

var ErrorsListModel = function (items) {
        var self = this;
        self.allErrors = ko.observableArray(items);
        self.hasErrors = ko.computed(function () {
            return self.allErrors().length > 0;
        });
    }

    
    $("#btnErr1").click(function (evt)
    {
ko.cleanNode($("#ctlAlertUL")[0]);
      var rt = '["msg1", "msg2"]';
      var ve = $.parseJSON(rt);
      ko.applyBindings(new ErrorsListModel(ve), $("#ctlAlertUL")[0]);
    });


    $("#btnErr2").click(function (evt)
    {
ko.cleanNode($("#ctlAlertUL")[0]);
      var rt = '[]';
      var ve = $.parseJSON(rt);
      ko.applyBindings(new ErrorsListModel(ve), $("#ctlAlertUL")[0]);
    });

});

    </script>


1. Кликаю на Err1 несколько раз и список с сообщениями разрастается.

2. Кликнул на NoERR, список очистился. После этого кликаю на Err1 — никаких сообщений больше не добавляется.

Что я делаю не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.