2015-03-23 5 views
0

Я передал переменную scope в функцию, где я пытаюсь ее изменить, даже несмотря на то, что значение доступно внутри функции, ее значения не изменяются.

Вот мой HTML

<div class="console_item" ng-class="dropdwns.assetshow==true?'showdrp':'hidedrp'" ng-click="drpdwn(dropdwns.assetshow)">Asset Type</div> 

Вот код в мой контроллер

$scope.dropdwns={assetshow:false}; 
$scope.drpdwn=function(dat){ 
    if(dat==true) 
    { 
     dat=false; 
    } 
    else 
    { 
     dat=true; 
    } 
    console.log($scope.dropdwns); 
} 

Я попытался $ применить, но это дает мне error.Can кто-то помочь мне спасибо.

+0

'dat' - локальная переменная. Это не указатель. Изменение его не изменит исходный параметр. – JJJ

+0

Итак, мне нужно написать отдельную функцию для каждого объекта? – Tyranicangel

+1

Нет. Если щелкнуть логическое значение - это единственное, что вы хотите сделать, проще всего отбросить функцию и просто сделать «dropdwns.assetshow =! Dropdwns.assetshow' в представлении. – JJJ

ответ

0

Вам просто нужно установить на правильную переменную

$scope.dropdwns={assetshow:false}; 
$scope.drpdwn=function(dat){ 
    $scope.dropdwns.assetshow = !dat; // Here 
    console.log($scope.dropdwns); 
}; 
+0

dropdwns - это список объектов, таких как assetshow.I cant equate assetshow =! Dat – Tyranicangel

+0

Кроме того, это небольшой пример, который я сделал не из исходного кода, поэтому он не просто true/false – Tyranicangel

0

Вы должны передать объект в функцию, а не его свойство:

<div class="console_item" ng-class="dropdwns.assetshow==true?'showdrp':'hidedrp'" ng-click="drpdwn(dropdwns)">Asset Type</div> 

    $scope.drpdwn=function(dat){ 
    if(dat.assetshow == true) 
    { 
     dat.assetshow = false; 
    } 
    else 
    { 
     dat.assetshow = true; 
    } 

    //A more simple version dat.assetshow = !dat.assetshow 
    console.log($scope.dropdwns); 
} 
0

Самый короткий ответ:

<div class="console_item" ng-class="{'showdrp':dropdwns.assetshow, 'hidedrp':!dropdwns.assetshow}" ng-click="dropdwns.assetshow = !dropdwns.assetshow">Asset Type</div> 
Смежные вопросы