Добавьте атрибут KO «data-bind» в $ (document) .ready - PullRequest
1 голос
/ 01 апреля 2012

Предисловие

Я редко когда-либо был разработчиком JS, и это моя первая попытка что-то сделать с Knockout.js.Вопрос, который должен следовать, вероятно, иллюстрирует обе точки.

Backgound

У меня есть довольно сложное приложение MVC3, которое я пытаюсь заставить работать с KO (v2.0.0+0,0).Мое приложение MVC предназначено для общего управления тем, какие поля отображаются в представлении (и как они добавляются в представление).Он использует частичные представления, чтобы решить, что рисовать в представлении, основываясь на разрешениях пользователя (если пользователь находится в группе A, тогда показать элемент управления A, если пользователь в группе B затем показать элемент управления B или, возможно, если пользователь находится в группе A, вообще не включайте элемент управления).Кроме того, моя модель очень плоская, поэтому я не уверен, что встроенная возможность применить мою ViewModel к определенной части вида поможет.

Мое решение этой проблемыобеспечить действие в моем контроллере, которое отвечает объектом в формате JSON, который содержит селектор JQuery и содержимое, которое назначается атрибуту «data-bind», и привязывает ViewModel к представлению в событии $(document).ready, используя значения

Неудачное подтверждение концепции

Моя первая попытка доказать, что это работает, на самом деле, похоже, не работает, и "не работает"Я имею в виду, что он просто не связывает значения вообще (как можно увидеть в this jsfiddle ).Я пробовал это с applyBindings внутри события ready и нет, но это, кажется, не имеет никакого значения.

Вопрос

Что я делаю не так?Или это просто не то, что может работать с нокаутом (хотя я видел, по крайней мере, один пример в Интернете, делающий то же самое, и это предположительно работает)?

Как я уже говорил в предисловииЯ только когда-либо делал вид, что являюсь разработчиком JS (хотя я обычно заставлял его работать в прошлом), поэтому я не знаю, с чего начать, пытаясь понять, что я делаю неправильно.Надеюсь, это не настоящий вопрос нуба.

1 Ответ

3 голосов
/ 01 апреля 2012

Вы уверены, что ссылались на библиотеку Knockout? Я заставил вашу скрипку работать, просто сославшись на Knockout:

скрипка

На своей странице вы можете использовать тег script для этого:

<script src="pathToKnockoutJsFileOnYourServer" type="text/javascript"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...