2017-01-30 8 views
0

これがなぜ機能しないのか正直に分かりません。それは動作するはずです。「コントローラーとしてバインディングを更新していません」

https://jsfiddle.net/4utpnsh9/

HTML this.Timer更新が、それはビューで更新されない場合は

$interval(function() { 
    this.Timer = Math.round(new Date().getTime()/1000.0); 
}, 1000); 

<div ng-app="app" ng-controller="IndexController as vm"> 
    <span>{{vm.Timer}}</span> 
</div> 

角度。それは私がconsole.log()でもそれをします。私はvm.Timerを削除し、単にそれをTimerになり、代わりにthis$scopeにそれを適用した場合、それはあなた自身のため見ることができるように、完璧に動作:https://jsfiddle.net/4utpnsh9/1/

を、私はこの1つは別のスタックに、この複数回やったが、何らかの理由で私はそれがうまくいかない理由を理解できません。私は間違って何をしていますか?

答えて

5

thisはあなたの考えではありません! thisは、インターバルのコールバックのコンテキストを変更しています。矢印関数を使うか、コンテキストを設定してください!

$interval(() => { 
    this.Timer = Math.round(new Date().getTime()/1000.0); 
}, 1000); 

それとも

$interval(function() { 
    this.Timer = Math.round(new Date().getTime()/1000.0); 
}.bind(this), 1000); 
+0

Aaahhhくそ!私はTypescriptに慣れているので、古代のものに戻ると、私はすべてのshizzを忘れる!ありがとう、おい、ハハ。 – MortenMoulder

+1

@MortenMoulder - TypeScriptは、家を所有した後であなたの大学の寮に戻ってくるようなものです.-いつも助けてくれるよ。 – tymeJV

+0

母はかなり良いアナロジーです!もう一度ありがとう :) – MortenMoulder

関連する問題