Angularjs Ng show未动态添加元素
我的控制器中有一个名为Angularjs Ng show未动态添加元素,angularjs,angularjs-ng-show,Angularjs,Angularjs Ng Show,我的控制器中有一个名为won的变量,它可以打开和关闭,但ng show不会动态隐藏/显示元素。为什么?当我最初设置won=false/true时,它似乎起作用,但在应用程序运行时不起作用 <div class='container' ng-controller='CardsCtrl'> <div class='win' ng-show='won'> <img ng-src='images/win.gif'> </div> <
won
的变量,它可以打开和关闭,但ng show不会动态隐藏/显示元素。为什么?当我最初设置won=false/true
时,它似乎起作用,但在应用程序运行时不起作用
<div class='container' ng-controller='CardsCtrl'>
<div class='win' ng-show='won'>
<img ng-src='images/win.gif'>
</div>
<div ng-show='!won' ng-repeat='card in cards' ng-click='card.flipped || changeState(card)'
ng-class="{'card' : !card.flipped, 'card flipped': card.flipped}">
<img ng-src='{{card.back}}' class='back side'>
<div class='face side'>
<img ng-src='{{card.logo}}' class='logo'>
</div>
</div>
</div>
var memoryApp=angular.module('memoryApp',[]);
memoryApp.controller('CardsCtrl',函数($scope,$timeout){
var-won=$scope.won=false;
var cards=$scope.cards=[];
var当前_卡=[];
var checkingCards=$scope.checkingCards=false;
var logos=u.shuffle([0,0,1,1,2,2,3,3,4,4,5,5]);
对于(变量i=0;i<12;i++){
新卡=新卡(标识[i]);
//$interval(new_card.oscillate,2000年);
卡片。推送(新卡片);
}
牌=\洗牌(牌);
$scope.changeState=功能(卡){
赢=!赢;
console.log(韩元);
//如果(检查卡){
//返回;
// }
//card.flip();
//当前_卡。推送(卡);
//if(当前卡长度===2){
//checkingCards=true;
//$timeout(compareCards,1500);
// }
}
函数compareCards(){
如果(!当前\u卡[0]。比较(当前\u卡[1])){
当前_卡[0]。翻转();
当前_卡[1]。翻转();
}
if(checkWon()){
韩元=真;
}
当前_卡=[];
核对卡片=错误;
console.log(韩元);
}
函数checkWon(){
对于(变量i=0;i
问题是您总是更改局部变量won
,而不是angularjs使用的$scope
的won
属性
因此,不要使用won=true代码>
$scope.won = true;
在javascript中,变量不像指针那样工作,所以当您说var-won=$scope.won=false
您有两个属性won
和$scope。won
指的是false
,之后当您说won=true
时,won
的值更改为true
但$scope。won
仍然指的是false
,这就是问题所在。因此,无需在控制器中使用局部变量won
,因为它是一个始终处理scope属性的基本值
演示:,控制器代码在哪里?我们能看到它吗?Ng if在代码中的位置..Opps,我的意思是Ng-show。为了便于调试,请先尝试始终使用$scope.won
$scope.won = true;