Привязывание видимого параметра с оператором 'или' в нокауте

StackOverflow https://stackoverflow.com/questions/8803484

  •  26-10-2019
  •  | 
  •  

Вопрос

Я хотел бы связать видимое свойство, чтобы быть правдой, когда одно из двух условий верно. Что -то вроде следующего

 <tr data-bind="visible: active || $parent.displayDeactive">....</tr>

Мой код работает, когда я делаю одну или другое привязки, но не когда я помещаю || там. Я не нашел никакой документации, в которой говорится, что я могу внести какую -либо логику в этом привязке, но если я не могу сделать это напрямую, как это следует сделать, так как я связываю свойство шаблона и один объект $ родительский просмотр.

Это было полезно?

Решение

Если вы используете значение наблюдаемого в выражении, вам необходимо ссылаться на них как функцию. Так что если active а также displayDeactive вы сможете сделать: вы бы сделали:

data-bind="visible: active() || $parent.displayDeactive()"

Есть несколько способов переместить его в модель View, вы могли бы:

  • Создать вычисленное наблюдение за ребенком (функция должна быть в состоянии ссылаться на родитель)
  • Создайте функцию для родителя, которая принимает ребенка и возвращает ваше значение (привязки выполняются в вычисленном наблюдаемом, поэтому он снова будет стрелять, когда все это наблюдает, что он обращается к изменениям)
  • Создайте функцию для ребенка, которая принимает родитель и возвращает значение (то же примечание, что и выше)

Образец логики в привязке и использование функции на родителе здесь: http://jsfiddle.net/rniemeyer/f6zgh/

Другие советы

Добавьте парус после наблюдаемых, так как вы их оцениваете.

<input type="checkbox" data-bind="checked:displayDeactive"> Display deactive</input>
<br/><br/>
<table>
    <tbody data-bind="foreach: products">
        <tr data-bind="visible: active() || $parent.displayDeactive()">
            <td><span data-bind="text:name"></span></td>
        </tr>
    </tbody>
</table>

Вы можете найти полный код здесь: http://jsfiddle.net/johnpapa/gsnus/

Вы можете использовать вычисленное свойство на шаблонном элементе, которое оценивает выражение (только что видел, как @Rpniemeyer ответил этим тоже ... i +1'd).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top