2016-04-21 5 views
1

Das ist wirklich seltsam ... So plötzlich plötzlich eine Variable, die ich eingestellt und mehrmals in meinem Controller zurückgesetzt plötzlich nicht mehr selbst zurückgesetzt werden kann .Angularjs Variable in Methode eingestellt, die Variable nicht außerhalb der genannten Methode ändert

Controller:

$scope.classIndex = 0; 

$scope.classNum = function(i){ 
    $scope.classIndex = i; 
    //do other stuff with $scope.classIndex 
    //// This one wont update classIndex i.e. functions called with it always 
    ////show classindex as 0 
} 

$scope.viewClass = function(i){ 
    $scope.classIndex = i; 
    //do other stuff with $scope.classIndex //// BUT !!?? This one works fine 
} 

Html

////inside an ng repeat ... hence $index 
<div class="btn-group col-xs-10 col-xs-offset-1" ng-show="options"> 
    <button class="btn btn-xs btn-info btn-flat col-xs-6" ng-click="viewClass($index)"><i class="fa fa-info-circle"></i> View </button> 
    <button class="btn btn-xs btn-danger btn-flat col-xs-6" ng-click="classNum($index)"><i class="fa fa-trash-o"> Delete</i></button> 
</div> 

Also im Grunde meine Ansicht Schaltfläche zeigt den richtigen Artikel, sondern löschen löscht immer das Element am Index [0].

Irgendwelche Gedanken?

Edit: Dies war offenbar ein Fehler. Ich kopierte den Code in eine neue Datei, auf den Server hochgeladen und es begann plötzlich wieder zu arbeiten ...

+3

Ich glaube nicht, dass irgendetwas mit dem Code, den Sie oben geschrieben haben, falsch ist, das Problem könnte woanders liegen. Es wäre hilfreich, wenn Sie eine Plunkr/Geige erstellen könnten, die dieses Problem zeigt. –

+0

Leider kann ich das Problem nicht replizieren. Ich habe Tausende von Variablen geschrieben, aber das ist die erste, die ich nicht zuordnen kann, wenn ich sie schreibe. – KyleM

Antwort

1

Wenn Sie nicht diese Variable in jedem beliebigen HTML-Seite verwenden, ang es in nur mit, dass js Controller dann tun es in der gegebenen Weise. :

var classIndex = 0; 

$scope.classNum = function(i){ 
    classIndex = i; 
    //do other stuff with $scope.classIndex 
    //// This one wont update classIndex i.e. functions called with it always 
    ////show classindex as 0 
} 

$scope.viewClass = function(i){ 
    classIndex = i; 
    //do other stuff with $scope.classIndex //// BUT !!?? This one works fine 
} 
  • "$ scope" wird verwendet, wenn Sie mit HTML-Seite binden Daten wollen, wenn Sie werden einige Daten in js Controller nur dann keine Notwendigkeit dafür.
+0

Also wenn ich keine Daten bin, dann sollte ich einfach var oder direkte Deklaration verwenden wie: classIndex = ....? – KyleM

+1

Ja, das ist der bessere Weg. –

Verwandte Themen