我制作了这个简单的配对游戏,将我所有的代码都放在app.js中。要玩它,您只需在屏幕上配对卡片:每次配对时,card对象都会打印到控制台,其中包含游戏变量,例如移动次数、游戏计时器等。这些游戏变量应该会显示出来在屏幕的右下方,但我似乎无法通过CardFlipper控制器的$scope. 我该怎么做?我应该在控制器内移动我的功能和对象吗?这是我第一次使用 Angular JS,所以请随时提出更好的做法或更有效的方法来做到这一点。这是我的 app.js:
var app = angular.module('memoApp', []);
app.filter('shuffle', function() {
返回函数(数组){
var counter = array.length, temp, index;
而(反--){
索引 = (Math.random() * 计数器) | 0;
临时=数组[计数器];
数组[计数器] = 数组 [索引];
数组[索引] = 温度;
} 返回数组;
}
});
app.directive('card', function() {
返回函数(范围,元素){
element.bind('click', function(e) {
e.preventDefault();
揭示卡($(this).children('a'));
控制台.log(卡);
});
}
});
功能 CardFlipper($scope) {
$scope.deck = [
1, 2, 3, 4, 5, 6, 7, 8, 9,
1、2、3、4、5、6、7、8、9
];
$scope.card = 卡片;
};
/* 游戏 */
变量卡 = {
计数:0,
对:0,
移动:0,
计时器:0
};
var timer = setInterval(function(){
card.timer++;
}, 1000);
varrevealCard = function(picked) {
if (card.count!=1) {
// 第一步:存储数据
card.pair =pick.data('pair');
卡数 = 1;
转牌('擦除');
turnCard('flip', pick, card.pair);
} 别的 {
// 第二步:比较
if (picked.data('pair')==card.pair) {
if (!picked.hasClass('flip')) {
turnCard('win',pick,pick.data('pair'));
} 别的 {
转牌('擦除');
}
} 别的 {
turnCard('flip', pick, pick.data('pair'));
}
卡数 = 2;
卡片.moves++;
}
};
var turnCard = function(结果,挑选,对){
开关(结果){
案例“翻转”:
pick.toggleClass('flip').html(pair);
休息;
案例“赢”:
pick.addClass('flip').html(card.pair);
$('ul#game .flip').addClass('win');
休息;
案例“擦除”:
$('ul#game li').find('a').removeClass('flip').html('');
休息;
}
};