2016-02-24 53 views
-2

我对这个问题感到非常困惑: 我有一个Angular应用程序,我想用一个简单的JavaScript字符串更新来更改类,其中类名绑定到DOM。 最奇怪的是,在我的应用程序中,用于更改文本的最简单语句不起作用,但如果我在控制台的chrome中运行完全相同的行,则文本会发生更改。为什么这个声明不适用于我的应用程序?还有其他事情正在发生还是我错过了什么?在Angular应用程序中的奇怪的JavaScript错误

$scope.changesize = function() { 
      var fsize = $scope.form_size.split("-").pop(); // "form-group-xs"; 

      if (fsize == "xs") {fsize = "sm"}; //fsize = "xs"; 
      if (fsize == "sm") {fsize = "md"}; 
      if (fsize == "md") {fsize = "lg"}; 
      if (fsize == "lg") {fsize = "xs"}; 
      $scope.form_size = "form-group-" + fsize; 
      console.log($scope.form_size); // returns "form-group-xs" !!??!!!?! 
     } 

这里是我的控制台的屏幕截图作为证明: console http://imgur.com/xwIjtuT

+0

您应该避免使用范围对象当过就可以了。它在2.0中被删除,所以它已经是避免它的最佳实践。 –

回答

3

请使用if else,而不是if。问题是所有的if都成立,所以最后fsize被分配到xs

0

交换机也可以在此使用:

var fsize = $scope.form_size.split("-").pop(); 
switch (fsize){ 
    case "xs": 
     fsize = "sm"; 
    break; 
    case "sm": 
     fsize = "md"; 
    break; 
    case "md": 
     fsize = "lg"; 
    break; 
    case "lg": 
     fsize = "xs"; 
    break; 
} 

$scope.form_size = "form-group-" + fsize