AngularJs - отключить ввод в таблицу в зависимости от выбора верхней строки

0

Я пытаюсь сделать входные элементы таблиц отключенными из-под верхней (главной) строки, если в активной строке "Active" или "Engaged" boolean установлено значение true. Я не хочу, чтобы они потеряли свои данные под верхней строкой, когда они установили ее правду, только для ее отключения. Если пользователь устанавливает "Active" && "Engaged" в false в верхней строке, я хочу, чтобы они снова могли редактировать данные ниже верхней строки. Есть ли простой способ сделать это с помощью AngularJs?

Вот пример: https://jsfiddle.net/7kg6kuzm/2/

<body ng-app="test" ng-controller="AppCtrl">
<p>{{test}}</p>
<table class="table table-bordered">
    <thead>
        <tr>
            <th class="border-less"></th>
            <th>People</th>
            <th>Active</th>
            <th>Engaged</th>
            <th>Town</th>
        </tr>
    </thead>
    <tbody>
        <tr ng-repeat="(month, info) in months">
            <td><p>{{month}}</p></td>
            <td><input type="text" ng-model="info.people"/></td>
            <td><input type="checkbox" ng-model="info.active"/></td>
            <td><input type="checkbox" ng-model="info.engaged"/></td>
            <td><input type="text" ng-model="info.form" /></td>
        </tr>
    </tbody>

возможное значение объекта json (в этом случае, поскольку "все" или верхняя строка имеет одно из булевых значений, установленное в true, остальные строки будут отключены):

var months = {
  "all": {"people":25,"active":true,"engaged":false,"form":"test0"},
  "jan": {"people":63,"active":false,"engaged":true,"form":"test2"},
  "feb": {"people":46,"active":true,"engaged":false,"form":"test3"},
  "mar": {"people":65,"active":false,"engaged":false,"form":"test4"},
  "apr": {"people":66,"active":true,"engaged":true,"form":"test5"},
  "may": {"people":67,"active":false,"engaged":true,"form":"test6"}
}
Теги:
html-table

1 ответ

0

Я понял это, став для будущей справки, или если кто-то еще должен знать, как это сделать:

https://jsfiddle.net/7kg6kuzm/3/

В итоге я поставил проверку на каждую строку ввода, а также проверил значение первой строки:

<td><input ng-disabled="(months['all'].active || months['all'].engaged) && this.month!=='all'" type="text" ng-model="info.people"/></td>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню