2016-05-19 7 views
1

私はチェックボックス付きの予定があります。チェックボックスには「完了」とマークされ、未チェックのボックスには「元に戻す」とマークされます。最初にチェックされていないボックスのチェックを外すと、すべて正常に動作しています。これはチェックされたときに「完了」とマークされ、それを元に戻すと「元に戻す」とマークされます。チェックボックスをオンにすると、角度変更が動作しません

ただし、最初にチェックボックスをオフにすると問題が発生します。何も起こりません。私はそれをチェックしなかったので、 "元に戻す"とマークされているはずです。その後、私はボックスをチェックして、そこにng-changeトリガーがありますが、 "完了"とマークされていませんが、 "元に戻す"とマークされていません。

HTML

<input icheck type="checkbox" 
     ng-model="toDo.value.members.status.value" 
     ng-change="vm.markAs(toDo.value.instanceId)" 
     ng-click="vm.markAs(toDo.value.instanceId)" 
     ng-init="toDo.value.members.status.value === 'Undone'" 
     ng-checked="toDo.value.members.status.value === 'Done'"> 
<span class="m-l-xs">{{ toDo.value.title }}</span> 

コントローラー

function markAs(id) {  
    todolistService.getToDo(id).then(function (response) { 
     vm.toDoStatus = response.data.members.status.value; 
     if (vm.toDoStatus == 'Undone') { 
      console.log('Done'); 
      todolistService.markAsDone(id).then(function() { 
       notifyService.success($translate.instant('MSG_TODO_MARK_AS_DONE_SUCCESS')); 
      }, function (error) { 
       notifyService.showError(error); 
      }); 
     } else if (vm.toDoStatus == 'Done') { 
      console.log('Undone'); 
      todolistService.markAsUndone(id).then(function() { 
       notifyService.success($translate.instant('MSG_TODO_MARK_AS_UNDONE_SUCCESS')); 
      }, function (error) { 
       notifyService.showError(error); 
      }); 
     } 
    }, function (error) { 
     notifyService.showError(error); 
    }); 
} 

私はあなたが問題を理解してほしいです。

+1

ステータスがインスタンス化されていないためですしてみてください。ステータスが「完了」または「元に戻す」と等しくない場合、彼はnullまたは空です。 'vm.toDoStatusを追加== '元に戻す' || vm.toDoStatus == undefined' – Alexis

+0

ng-modelとng-checkedを同時に使用するのは普通ですか? – MayK

+0

チェックボックスng-modelはブール値です。だから 'toDo.value.members.status.value'は' Undone'( 'ng-init =" toDo.value.members.status.value === 'Undone' "')ではなくtrueまたはfalseでなければなりません。 – Christoph

答えて

0

は変更してみてください:

function markAs(id) { 

へ:

vm.markAs = function(id) { 
+2

いいえ、私は実際に私のコントローラの上に 'markAs'メソッドを宣言していましたので、何も問題はありません:' vm.markAs = markAs; ' –

+0

コードでページにリンクできますか? – Arg0n

0

私は状況がインスタンス化されていないからだと思います。

ステータスが「完了」または「元に戻す」と等しくない場合、彼はnullまたは空です。

if(vm.toDoStatus == 'Undone' || vm.toDoStatus == undefined) 

代わりの

if (vm.toDoStatus == 'Undone') 
+0

私はこれを試しましたが、実際には何も変わりませんでした。ご覧のように、私は 'console.log'sを両方の条件に入れますが、最初にチェックボックスをオフにすると、' else if(vm.toDoStatus == '完了')の状態には入りません。しかし、私がそれを確認すると、それはその状態になります。それは間違っています。 –

+0

さて、初期チェックでステータスをログに記録してみてください。 – Alexis

+0

初期チェックのステータスは正常です。チェックボックスの初期チェックのステータスは読み取れません。自分の状態や「変更」自体に何か問題があるかどうかはわかりません。 –

関連する問題