При редактировании записи данные поступают в соответствующие поля для редактирования, но флажок не проверяется, если его значение равно 1.

Он должен быть в проверенном состоянии, если у него есть 1, и не проверен, если у него есть 0, так как тип данных поля равен tinyint. Я получаю данные из массива JSON через PHP. Я пытаюсь получить значение ng-checked="{{rec.isSpecial}}", но это не работает.

Вот мой HTML:

<div class="form-group">
  <div class="col-lg-offset-2 col-lg-10">
    <div class="checkbox c-checkbox">
      <label>
        <input type="checkbox" ng-checked="{{rec.isSpecial}}" ng-model="rec.isSpecial">
        <span class="fa fa-check"></span>Special
      </label>
    </div>
  </div>
</div>

Вот мой JS

$scope.rec = $resource('api/AdminArea/category/edit/:id', {
  id: id
}).get(function(data) {
  $scope.rec = data;
});
2
usman ahmad 17 Дек 2015 в 14:41

5 ответов

Лучший ответ

Поскольку ваши данные возвращают числа, а не значения true или false, вы можете сделать это следующим образом:

<div class="form-group">
    <div class="col-lg-offset-2 col-lg-10">
      <div class="checkbox c-checkbox">
        <label>
          <input type="checkbox" ng-checked="rec.isSpecial==1" ng-model="rec.isSpecial">
          <span class="fa fa-check"></span>Special
        </label>
      </div>
    </div>
  </div>

См. fiddle для получения дополнительной информации.

7
Jax 17 Дек 2015 в 11:50
'use strict';
var app = angular.module('MyApp',[]); 
app.controller('myController', function ($scope) {
   $scope.isSpecial =true;
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div class="form-group" ng-app ="MyApp" ng-controller="myController">
                              <div class="col-lg-offset-2 col-lg-10">
                                 <div class="checkbox c-checkbox">
                                    <label>
                       <input type="checkbox" ng-checked="{{isSpecial}}" ng-model="isSpecial">
                                       <span class="fa fa-check"></span>Special
                                      </label>
                                 </div>
                              </div>
                           </div>
0
Suresh B 17 Дек 2015 в 11:48

Вам вообще не нужно ng-checked, достаточно ng-model, чтобы это работало. Если ваш rec.isSpecial установлен на 1 для его проверки, тогда просто ваш input такой:

<input type="checkbox" ng-model="rec.isSpecial" ng-value="1" />

И Angular автоматически установит этот флажок.

1
Shashank Agrawal 17 Дек 2015 в 11:49

Выражение ng-checked={{ ... }} ожидает оператора true или false. Если вы установите rec.isSpecial = true, в вашем контроллере Angular ваш код должен работать!

1
Shashank Agrawal 17 Дек 2015 в 11:58

Вам не нужна директива ng-checked, если вы используете ng-model для ввода тега.

Поскольку это флажок, модель будет булевой, поэтому вам нужно выполнить приведение. Этот пример будет работать

HTML

<div data-ng-app="app">

  <div data-ng-controller="MainController">
    Check
    <input type="checkbox" data-ng-model="isSpecial">
  </div>
</div>

JS

angular.module('app', []);

angular.module('app')
    .controller('MainController', mainController);

mainController.$inject = ['$scope'];

function mainController($scope){

  $scope.check = 0;
  $scope.isSpecial = ($scope.check === 1) ? true : false;

}
0
Renan Ferreira 17 Дек 2015 в 11:59