将false设置为范围变量在出厂时设置时不起作用

时间:2016-10-06 11:17:25

标签: angularjs

我有一个导航下拉列表,我想根据工厂的值隐藏下拉列表中的一些选项。我正在根据工厂的值隐藏或显示的选项上使用 WebDriver driver; driver=new FirefoxDriver(); String a=driver.findElement(By.id("")).getText();//Fetch id of first screen driver.navigate().to("The second screen"); driver.findElement(By.id("")).sendKeys(a);//fetch id of second screen and put the value of the first screen

当我在没有工厂的情况下直接将其设置为false时,它可以工作,我在下拉列表中看不到这些选项。

这是我从工厂获取数据的方式:

ng-show

当我将上述内容直接设置为$scope.mstrClientLStatus=userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus; console.log($scope.mstrClientLStatus) //it is false but doesn't hide 时,隐藏了选项。

false

$scope.mstrClientLStatus= false //works and the options are hidden 下一行中的console.log,它是假的,但它仍会显示下拉列表中的选项。

html:

$scope.mstrClientLStatus

整个工厂代码:

<li ng-show="mstrClientLStatus"> //this is what I want to hide

2 个答案:

答案 0 :(得分:2)

我的同事提出了这个建议,虽然它是一种解决办法,但它确实有效。我想:

if(userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus=="true"){
    $scope.mstrClientLStatus= true;
}

答案 1 :(得分:0)

这非常奇怪,让你在控制器中编写代码,可能是一个摘要周期的问题,所有你需要把你的操作放在超时块中以使其在摘要周期中注册,

  $timeout(function() {
   $scope.mstrClientLStatus = userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus;
   $scope.$apply()
 })