AngularJS Обновление элемента работает только при изменении одного из его свойств - PullRequest
0 голосов
/ 22 ноября 2018

Мой вопрос может быть глупым, так как я новичок в JS и AngularJS, но я кое-что заметил.У меня есть список и функция:

$scope.persons = [{
        "id": 1,
        "name": "Mark",
        "alive": true
    }, {
        "id": 2,
        "name": "Tom",
        "alive": true
    }, {
        "id": 3,
        "name": "Jack",
        "alive": false
    }, {
        "id": 4,
        "name": "William",
        "alive": true
    }, {
        "id": 5,
        "name": "Scott",
        "alive": true
    }, ];
$scope.kill = function(person) {
        person = {
            "id": person.id,
            "name": person.name,
            "alive": !person.alive
        };
    console.log(person);
}

Этот список используется для создания таблицы.

<table>
    <tbody>
    <tr ng-repeat="person in persons">
        <td>Name : {{person.name}}</td>
        <td>Alive? : {{person.alive}}</td>
        <td>
            <button ng-click="kill(person)">{{person.alive?  'Kill' : 'Reborn'}}</button>
        </td>
    </tr>
    </tbody>
</table>

Когда я нажимаю кнопку, она должна переключать значение человека.в живых.С этим кодом это не работает.Но, если функция kill () имеет вид:

$scope.kill = function (person) {
        person.alive = !person.alive;
        console.log(person);
    }

Это работает!Я сделал ошибку в первой функции или это просто нормально?

С уважением,

1 Ответ

0 голосов
/ 22 ноября 2018

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

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