AngularJS: директива ng-модели - PullRequest
0 голосов
/ 16 апреля 2020

Рассмотрим приведенный ниже код:

<li ng-repeat="task in tasks track by $index" >
    <input ng-model="task.completeStatus" ng-click="updateOnClick()"
           type="checkbox" 
           style="margin-right: 20px;" />
    <span class="{{task.completeStatus}}" ng-dblclick="editTaskMessage()" 
          contenteditable="false" ng-model="task.taskMessage"
          ng-keydown="enterEdit()">
      {{task.taskMessage}}
    </span>
</li>

Моя проблема в том, как я могу получить доступ к ng-model="task.completeStatus" в контроллере ...? (Я попытался получить доступ к значению, возвращенному из ng-model в контроллере как $scope.task.completeStatus, но выдает ошибку как TypeError: Cannot read property 'completeStatus' of undefined), и можно ли использовать директиву ng-model для перезаписи или изменения существующих в настоящее время значений в массиве задач внутри контроллер .??

Я действительно ценю хорошее объяснение на оба вопроса ...

1 Ответ

0 голосов
/ 16 апреля 2020
  1. В первом вопросе вы получаете сообщение об ошибке, поскольку пытаетесь получить доступ к свойству массива внутри массива без его индекса.

Вы можете получить доступ к «task.completeStatus» в контроллере, передавая $ index массива в задачах, как показано ниже

ng-click="updateOnClick($index)"

А в контроллере вы можете получить доступ к «task.completeStatus», как показано ниже

function updateOnClick(index){
   var completeStatus = $scope.task[index].completeStatus);
}
Да, вы можете изменять значения, присутствующие в массиве задач в контроллере, поскольку ng-модель обеспечивает двухстороннее связывание переменных, что означает, что вы можете изменять значение переменной angular как из контроллера, так и из HTML.

Надеюсь, это полезно для вас.

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