Verwendung der benutzerdefinierten Bindung mit ko.observableArray ()

Wie funktioniert die benutzerdefinierte Knockout-Bindung mit observableArray? Wenn Sie ko.observable () mit benutzerdefinierter Bindung verwenden, funktioniert alles wie erwartet. Bei Verwendung von ko.observableArray () werden nur die Anfangsereignisse (init und update einmalig) ausgelöst, aber weitere Änderungen werden nicht erkannt (sieheGeige oder Code unten).

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="knockout-2.2.1.js"> </script>
</head>
<body>
    <div data-bind="text: Observable, updateBinding: Observable"></div>
    <div data-bind="foreach: ObservableArray, updateBinding: ObservableArray">
        <span data-bind="text: $data"></span>
    </div>
    <script type="text/javascript"> 
        ko.bindingHandlers['updateBinding'] = {
            init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
                alert("Binding Handler (Init)");
            },
            update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
                alert("Binding Handler (Update)");
            }
        };

        function ViewModel() {
            var self = this;

            self.ObservableArray = ko.observableArray();
            self.Observable = ko.observable();
        }

        var viewModel = new ViewModel();

        // Fires Init + Update for Observable and ObservableArray
        ko.applyBindings(viewModel);

        // Fires Update for Observable
        viewModel.Observable(1);

        // Does nothing
        viewModel.ObservableArray.push('1');
    </script>
</body>
</html>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage