2015-01-20 15 views
6

Poniżej znajduje się kod, który Im coraz problem:angularjs nieznane TypeError: Nie można odczytać Własność „1” NULL

//Main Codes for the Diary App 

(function() { 
//Create a new diary app 
var diary = angular.module('diary', ['ngRoute']); 

//Define a Router for the App 
diary.config(function ($routeProvider) { 
     $routeProvider. 


      when('/', { 
       templateUrl: 'partials/wall.php', 
       controller: 'DiaryWallController' 
      }). 


      when('/images', { 
       templateUrl: 'partials/images.html', 
       controller: 'DiaryImagesController' 
      }). 


      when('/audio', { 
       templateUrl: 'partials/audio.html', 
       controller: 'DiaryAudioController' 
      }). 


      otherwise({ 
       redirectTo: '/' 
      }); 
}); 

//Define Controllers 
diary.controller('DiaryWallController', function($scope) { 
    $scope.message = "Lets do this!! Wall of this site"; 
}); 

diary.controller('DiaryImagesController', function($scope) { 
    $scope.message = "Lets do this!! Images of this site"; 
}); 

diary.controller('DiaryAudioController', function($scope) { 
    $scope.message = "Lets do this!! Audio of this site"; 
});})(); 

jestem coraz to wiadomo TypeError: nie można odczytać właściwość „1” null. powodzeniem pobierać pliki określone w trasie, ale to nie jest wyświetlana w tym miejscu .. Sprawdziłem konsolę:

XHR finished loading: GET "http://localhost/mobile%20diary/app/partials/images.html". 

Ale zawartość załadowanej stronie nie są wyświetlane na stronie. Sprawdzam zasoby i tam jest ładowany plik images.html i widzę podgląd pliku, ale nie jest on wyświetlany na stronie.

Poniżej znajduje się plik HTML Shell:

<!DOCTYPE html> 
<html ng-app="diary"> 
<head lang="en" ng-controller=""> 
<meta charset="UTF-8"> 
<link rel="stylesheet" href="css/bootstrap.css" type="text/css"> 
<link rel="stylesheet" href="css/style.css" type="text/css"> 
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 
<title></title> 
</head> 
<body> 


<header> 
<nav class="menu-nav"> 
    <ul> 
     <li class="menu-buttons"><a href="#" id="selected"><i class="fa fa-newspaper-o"></i></a></li> 
     <li class="menu-buttons"><a href="#images"><i class="fa fa-file-text-o"></i></a></li> 
     <li class="menu-buttons"><a href="#audio"><i class="fa fa-image"></i></a></li> 
     <li class="menu-buttons"><a href=""><i class="fa fa-microphone"></i></a></li> 
     <li class="menu-buttons"><a href="" id="selected"><i class="fa fa-navicon"></i></a></li> 
    </ul> 
</nav> 
</header> 

<div ng-view> 

</div> 


<script src="js/angular.js"></script> 
<script src="js/angular-route.min.js"></script> 
<script src="js/app.js"></script> 
</body> 
</html> 
+0

Nie widzę żadnego odpowiedniego kodu, który mógłby spowodować problem, może jest w innym pliku? Masz gdzieś wskaźnik zerowy i prawdopodobnie próbujesz czegoś takiego: 'zmienna ['1']' –

+0

masz w swoim pliku index.html? jest to kod potrzebny do wyświetlenia szablonu. – cyan

+0

Tak, robię .. Lemme Zaktualizuj mój szablon HTML. – ChanX

Odpowiedz

9

miałem również ten sam błąd i podobny do komentarza z @ChanX miałem błąd w atrybucie ng-kontrolera. W moim przypadku przypadkowo dodano przez pomyłkę nazwę klasy css, której zamierzałem wprowadzić atrybut klasy do atrybutu ng-kontrolera.

Moja hipoteza jest taka, że ​​możesz zobaczyć ten błąd za każdym razem, gdy wystąpi problem z analizą atrybutu ng-kontrolera. W każdym razie, na pewno cieszę się, że znalazłem to na SO, ponieważ to był prawdziwy drapak głowy. Byłoby miło, gdyby komunikat o błędzie był bardziej informacyjny.

+1

dzięki za komentarz, a moje pytanie jest przydatne dla widzów również .. – ChanX

0

Wygląda na to, że używasz adresu URL localhost. Prawdopodobnie do debugowania lub środowiska deweloperskiego.

I jest funkcja na content_script.js że jest następujący:

function scanLinks() { 
 
    var current_domain = document.location.href.match(/^https?:\/\/(?:www\.)?([^\.]+\.[^\/]+)/i); 
 

 
    $("a[href][muse_scanned!=true]").each(function(i) { 
 
    this.setAttribute("muse_scanned", true); 
 
    var href = this.href; 
 
    var domain = href.match(/^http:\/\/(?:(?:www\.)?(?:[^\.]+\.(notlong\.com|qlnk\.net|ni\.to|lu\.to|zzang\.kr)|([^\.]+\.[^\/]+)))/i); 
 
    if (domain) { 
 
     domain = domain[1] || domain[2] || false; 
 
    } 
 
    if ((domain != current_domain[1]) && (expandSvcList.indexOf(domain) > -1)) { 
 
     this.title = "Expanding URL..."; 
 
     expandLink(this); 
 
    } 
 
    }); 
 
}

Ważną częścią jest:

var current_domain = document.location.href.match(/^https?:\/\/(?:www\.)?([^\.]+\.[^\/]+)/i); 

która sprawdza aktualny link w Wasz przypadek "http://localhost/ ..." dla poprawnego adresu URL, np. "http: // www .localhost/". Ponieważ tak nie jest, powoduje to błąd podczas uzyskiwania dostępu do current_domain[1], ponieważ current_domain ma wartość null.

+0

dzięki za dodatkową funkcję. Zaimplementuję to w mojej aplikacji – ChanX

+0

Nie musisz niczego implementować. Szanse są takie, że nie użyjesz localhost jako adresu produkcyjnego. – ruisilva450

Powiązane problemy