Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Ng show未动态添加元素_Angularjs_Angularjs Ng Show - Fatal编程技术网

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;