2

http://jsfiddle.net/mahbub/sbNty/4/をご覧ください

<div ng-app="">
  <div ng-controller="Ctrl">
        <ul>
            <li ng:repeat="status in statuses"><label><input type="checkbox" data-ng-model="status.type" data-ng-true-value="closed" data-ng-false-value="{{status.type}}" />{{status.type}}</label></li>
      </ul>
  </div>
</div>​

ご覧のとおり、チェックボックスのラベルは、JSON のステータス タイプに基づいて出力されます。チェックを外すと、ラベルは false になります。チェックボックスをオフにすると、元のラベル テキストに戻る正しい方法が見つからないはずです。

つまり、チェックを外すと、ラベルは「オープン」または最初の状態である必要があります。

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

1

最後に、ngInit を使用してスコープ オブジェクト内に別の変数を設定しました。ここでデモを参照してくださいhttp://jsfiddle.net/mahbub/sbNty/5/

<div ng-app="">
  <div ng-controller="Ctrl">
        <ul>
            <li ng:repeat="status in statuses"><label><input ng-init="status.oldStat=status.type" type="checkbox" ng-model="value" ng-click="selectV(value,this)">{{status.type}}</label></li>
      </ul>
  </div>
</div>​

コントローラー:

'use strict';

function Ctrl($scope) {
    $scope.statuses = [{
        id: 1,
        type: 'open'},
    {
        id: 2,
        type: 'open'},
    {
        id: 3,
        type: 'new'},
    {
        id: 4,
        type: 'closed'},
    {
        id: 5,
        type: 'open'},
    {
        id: 6,
        type: 'new'},
    {
        id: 7,
        type: 'open'}
];

    $scope.selectV = function(val, stat) {
        if (val) {
            stat.status.type = "closed";
        } else {
            stat.status.type = stat.status.oldStat;
        }
    }
}​
于 2012-12-13T10:17:58.823 に答える