Подтвердить что ты не робот

Использование консоли Chrome для доступа к нокауту ViewModel с RequireJS

Как мне получить доступ к переменным KnockOut ViewModel в консоли Chrome теперь, когда я использую RequireJS?

Перед использованием RequireJS я последовал шаблону namespacing, скрывая все в пределах одного глобального. Я мог бы получить доступ к глобальному, введя следующее в консоль Chrome: window.namespaceVar.

Но теперь, когда я использую RequireJS, все мои переменные скрыты за требуемой функцией.

require(['knockout-2.2.0', 'jquery'], function (ko, jQuery) {

    var ViewModel = function () {
            var testVar = ko.observable(true);
        };

    ko.applyBindings(new ViewModel());
}

Итак, как бы получить доступ к текущему значению testVar в примере?

4b9b3361

Ответ 1

Нокаут включает в себя функции ko.dataFor и ko.contextFor, которые предоставят вам доступ к информации о моделировании KO с учетом элемента.

Итак, в консоли вы можете сделать что-то вроде:

var vm = ko.dataFor(document.body);

В вашем случае testVar не отображается, поэтому вы все равно не сможете получить к нему доступ. Я предполагаю, что ваш был всего лишь образцом, и вы имели в виду что-то вроде:

var ViewModel = function () {
     this.testVar = ko.observable(true);
};

Теперь, используя вышеуказанный метод, вы сможете получить доступ к vm.testVar и его значению, выполнив vm.testVar()

Вот документы, которые мы имеем для этих функций: http://knockoutjs.com/documentation/unobtrusive-event-handling.html

и здесь шаг за шагом о том, как отлаживать KnockoutJS с хром: http://devillers.nl/quick-debugging-knockoutjs-in-chrome/

с использованием функции Chrome $0_ $4: https://developers.google.com/chrome-developer-tools/docs/commandline-api#0-4

Ответ 2

Как предложил Райан, самый быстрый способ - использовать ko.contextFor и ko.dataFor в консоли, чтобы увидеть контекст привязки элемента на dom.

Там также очень полезное расширение Chrome, которое использует этот принцип, называемый "Отладчик контекста KnockoutJS", доступный здесь:

Интернет-магазин Chrome - отладчик контекстных сообщений KnockoutJS

Он позволяет вам проверять элемент и видеть его в боковой панели панели элементов. Это наиболее полезно, если у вас есть несколько контекстов привязки на странице или очень вложенные контексты привязки.

Ответ 3

Требовать, чтобы все не были глобальными:

require(["knockout"],function(ko){ window.ko=ko;}); 

снова вводит глобалы

Вы можете использовать это в консоли:

require("knockout").dataFor($0);
require("knockout").contextFor($0);