2014-09-26 45 views
0

我想确定为什么调用我的$scope.reset()方法不能如我所愿。我想完成的是:单击Reset按钮后,values对象被重新初始化并且其theState字段被设置为'one'。这应该会导致显示id='one'的div,并且它是2个兄弟被隐藏。重置一个angularjs模型; ng-show

单击重置时发生的实际情况是,所有三个div元素都隐藏起来,直到我单击其中一个标有One,Two,Three的按钮。我假设,这个失败的原因是ng-show被绑定到的实际对象正在$scope.reset()更改 - 但我不知道如何让视图作出我想要的反应。

HTML:

<div ng-controller="AppCtrl"> 
    <input type="button" ng-click="values.theState='one'" value="One"/> 
    <input type="button" ng-click="values.theState='two'" value="Two"/> 
    <input type="button" ng-click="values.theState='three'" value="Three"/> 

    <div id="one" ng-show="values.theState=='one'"> 
    This is div=1 
    </div> 
    <div id="two" ng-show="values.theState=='two'"> 
    This is div=2 
    </div> 
    <div id="tre" ng-show="values.theState=='three'"> 
    This is div=3 
    </div> 

    <input type="button" ng-click="reset()" value="Reset"/>   
</div> 

AngularJS:

<script> 
    var app = angular.module("app", []); 
    app.controller("AppCtrl", function($scope) { 
    $scope.values = { 
     theState: 'one' 
    }; 

    $scope.reset = function() { 
     $scope.values = {}; 
     $scope.value.theState = 'one';      
    } 
    }); 
</script> 
+0

看看你能不能在这里重建破碎的功能: http://plnkr.co/edit/4zkHRl8eTBvmzvJBRNkH?p=preview – Owen 2014-09-26 14:37:51

+1

找到它。我正在重写一个单页面的应用程序,添加了一对'div来切换开关,并通过复制粘贴,忽略从HTML中删除旧的'id's。一个星期以来一直盯着这个缺陷。 – grinder 2014-09-26 14:44:38

+0

您应该删除此问题,因为问题与发布的代码无关。祝贺你找到你的问题。 – Owen 2014-09-26 14:46:24

回答

0

你缺少你复位功能的 'S':

$scope.values.theState = 'one'; 
+0

啊......我试图用一个简单的例子重新编写我的实际代码中的问题,错误地输入。您的答案肯定会解决我的示例问题 - 谢谢 - 但是我正在编写的应用程序正在发生其他问题。我将不得不多做一些游戏来重新创建。 – grinder 2014-09-26 14:09:02