我正在研究一個基本的JavaScript賽車遊戲程序,我正在嘗試使用Angular來更新視圖中的分數。我已經寫下了移動玩家的基本代碼並擁有不同的遊戲狀態。爲什麼我的角度數據綁定不會在視圖中更新?
你可以看到我是如何設置我的代碼在這裏:
http://jsfiddle.net/ey8dk22r/1/
出於某種原因,它沒有顯示在小提琴,但在我結束時的角度代碼會顯示爲「0」每個分數。如果我將$ scope.score_one或兩個更改爲「hello」之類的字詞,則會顯示「hello」一詞。目前,我已將{{score_one}}和{{score_two}}設置爲player1.score和player2.score。無論數字最初設置爲什麼會顯示(0)。當玩家獲勝並且玩家的分數成功更新時,視圖中的分數不會更新。
這是我的js文件的一部分; Player對象和scoreController:
function Player(element_id, name){
this.el = $(element_id).selector;
this.position = 1;
this.name = name;
this.score = 0;
this.check = function(){
if ($(this.el + ' td:last-child').hasClass("active")){
this.score += 1;
$(".winner").html("<h2>" + this.name + " wins!</h2>")
game = false;
$(".reset").show();
}
}
this.move = function(position){
$(this.el + ' td').removeClass('active');
$(this.el + ' td:eq(' + (this.position) + ')').addClass("active");
this.check();
this.position += 1;
}
}
function scoreController($scope){
$scope.score_one = player1.score;
$scope.score_two = player2.score;
}
而且這裏是我做的數據綁定在html文件:
<div class="container" ng-app="" ng-controller="scoreController">
<h1>A Day at the Races</h1>
<ol>
<li ng-model="score_one">Mew: {{ score_one }}</li>
<li ng-model="score_two">Celebi: {{ score_two }}</li>
</ol>
所以,我想知道如果我有什麼不對的範圍,以及爲什麼分數沒有正確更新。我確實有角度鏈接,我正在嘗試使用正確更新視圖的輸入字段,但由於某些原因,這不起作用。我查看$ apply並在$ apply()中嘗試了$ scope.score_one,但我不確定是否正確。
讓我知道你是否有任何想法。謝謝。
你是對的,你應該使用'$ apply'來更新模型的值。 – khakiout 2014-10-03 04:28:31
這裏有很多問題。首先,即使找到你的控制器,你的jsfiddle也有錯誤。其次,我沒有看到你定義你的角度應用程序的位置:你的'angular.module(「App」,[])''在哪裏?在我們到達「第三」之前,你能先解決這個問題嗎? – 2014-10-03 05:18:39