2015-03-19 62 views
0
一些条件使范围的变量在控制器

我在Angularjs控制器代码如下:如何基于在Angularjs

$scope.validElements = [          
           { 
            "id": "One",    
           }, 
           { 
            "id": "Two", 
           }, 
           { 
            "id": "Three", 
           }, 
           { 
            "id": "Four", 
           } 
          ]; 

我怎样才能让validElements根据病情 (if(someService.someElement == "ABC"))然后

$scope.validElements = [          
           { 
            "id": "One",    
           }, 
           { 
            "id": "Three", 
           }  
         ]; 
是不同的

否则

$scope.validElements = [          
           { 
            "id": "One",    
           }, 
           { 
            "id": "Two", 
           }, 
           { 
            "id": "Three", 
           }, 
           { 
            "id": "Four", 
           } 
         ]; 

PLE如果有可能或者有任何粗略的想法,可以提出建议

+0

您是否希望将'$ scope.validElements'绑定到'someService.someElement'? – 2015-03-19 04:38:45

+0

@WilliamGaul:是的,我的意思是这个条件是基于'someService'中的一些元素。 – 2015-03-19 04:40:50

回答

1

看来你想创建另一个作用域变量,并将其设置为someService,然后在someSome元素上放置一个监视器。然后,您可以在监视功能中处理该情况。我这样做是为了观察服务变量

$scope.validElements = [ // set default here    
     { 
      "id": "One",    
     } // ... 
    ]; 
    $scope.someService = someService; 
    $scope.$watch('someService.someElement', function(newValue, oldValue) { 
     // or a switch statment 
     if(newValue == 'ABC'){ 
      $scope.validElements = [          
        { 
         "id": "One",    
        }, 
        { 
         "id": "Three", 
        }  
      ]; 
     }else{ 
      // handle else condition 
      $scope.validElements = [          
        { 
         "id": "One",    
        }, 
        { 
         "id": "Two", 
        }, 
        { 
         "id": "Three", 
        }, 
        { 
         "id": "Four", 
        } 
      ]; 
     } 
    }); 

希望这有助于!祝您好运

+0

我会试着用这个来实现并且会让你知道。感谢您的及时回复。 :) – 2015-03-19 04:47:13