Преобразовать тип сопоставленного значения KnockOutJs.linkObservableToUrl в bool - PullRequest
1 голос
/ 28 ноября 2011

Я работаю над одностраничным приложением, которое включает в себя сортировку.Я использую

viewModel = new {
    SortAsc = ko.observable(true)
};
ko.linkObservableToUrl(viewModel.SortAsc, "Asc", viewModel.SortAsc());

для достижения этого сопоставления.И это работает, но проблема в том, что отображение возвращает буквенные строки «false» и «true» вместо значения bool.Это вызывает проблему с флажком, который связан с этим свойством:

<input type="checkbox" data-bind="checked: SortAsc" value="Ascending"/>

Вопрос в том, как сделать это значение из URL-адреса для преобразования в правильный тип (обычный bool), поэтому мой флажок будетобновляться правильно?

1 Ответ

0 голосов
/ 28 ноября 2011

Хорошо, я нашел, как преодолеть эту проблему.Не очень элегантно, но работает.1. Я предполагал, что SortAsc будет строковым свойством в моей логике.Поэтому я оставил ссылку на URL как в тексте вопроса.Только инициализировал его строкой, вместо bool ("true" intead из true).2. Я создал доступную для записи зависимость observable, которая будет выполнять преобразование:

viewModel.SortAscBool = ko.dependentObservable({
    read: function () {
        return this.SortAsc() === "true"; 
    },
    write: function (value) {
        this.SortAsc(String(value));
    },
    owner: viewModel
});

, и привязал свой флажок к этой пропе.Так что теперь, когда флажок установлен, SortAscBool изменен, и он устанавливает буквальное значение SortAsc (я думаю, что это преобразование действительно не нужно, но как программист C # мне это нравится :)).И, конечно же, при изменении SortAsc SortAscBool также изменится и вернет преобразованное значение в проверенную привязку.И это то, что действительно было необходимо.

Кроме того, сначала я просто создал одностороннюю зависимую наблюдаемую, но тогда URL не будет обновляться со значениями из флажка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...