2015-01-20 25 views
6

Di seguito è riportato il codice che Im ottenendo problema con:AngularJS TypeError sconosciuta: non può leggere Proprietà '1' di 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"; 
});})(); 

sto ottenendo questo TypeError Unknown: Impossibile leggere la proprietà '1' è NULL. E recuperare con successo i file specificati nel percorso, ma non viene visualizzato nel sito .. Ho controllato la console:

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

Ma il contenuto della pagina caricata non viene visualizzato nel sito. Controllo le risorse e il file images.html è caricato e posso vedere l'anteprima del file ma non è mostrato nel sito.

riportano di seguito le file 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

Non vedo alcun codice rilevante che possa causare il problema, forse è in un altro file? Hai un puntatore nullo da qualche parte e probabilmente stai provando qualcosa del tipo: 'variable ['1']' –

+0

hai nel tuo index.html? è un codice necessario per mostrare il modello. – cyan

+0

Sì, sì .. Lemme Aggiorna il mio modello HTML. – ChanX

risposta

9

Ho anche avuto questo stesso errore e simile al commento da @ChanX ho avuto un errore in un attributo ng-controller. Nel mio caso, ho accidentalmente aggiunto un nome di una classe css che intendevo mettere per errore nell'attributo class all'attributo ng-controller.

La mia ipotesi è che si possa visualizzare questo errore ogni volta che si verifica un problema durante l'analisi di un attributo ng-controller. Ad ogni modo, sono davvero contento di aver trovato questo su SO perché è stato un vero grattacapo. Sarebbe bello se il messaggio di errore fosse più informativo.

+1

grazie per il commento, e che la mia domanda è utile anche per gli spettatori .. – ChanX

0

Questo sembra essere perché si sta utilizzando url localhost. Probabilmente per il debug o l'ambiente di sviluppo.

E c'è una funzione su content_script.js che è la seguente:

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); 
 
    } 
 
    }); 
 
}

La parte importante è:

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

che controlla il vostro collegamento corrente, in il tuo caso "http://localhost/ ..." per un url valido come "http: // www .localhost/". Perché questo non è il caso provoca l'errore quando si accede a current_domain[1] perché current_domain è nullo.

+0

grazie per la funzione aggiuntiva. Lo implementerò nella mia app – ChanX

+0

Non è necessario implementare nulla. Le probabilità sono che non si userà localhost come indirizzo di produzione. – ruisilva450

Problemi correlati