2015-01-20 10 views
6

Dưới đây là đoạn code mà Im nhận được vấn đề với:AngularJS Unknown Lỗi Loại: Không thể đọc tài sản '1' Trong 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"; 
});})(); 

Tôi nhận TypeError Unknown này: Không thể đọc thuộc '1' của null. Nó lấy thành công các tập tin quy định tại các tuyến đường nhưng nó không hiển thị trong trang web .. Tôi đã kiểm tra giao diện điều khiển:

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

Nhưng nội dung của các trang nạp không được hiển thị trong trang web. Tôi kiểm tra tài nguyên và trong đó tệp images.html được tải và tôi có thể xem bản xem trước tệp nhưng nó không được hiển thị trên trang web.

Dưới đây là 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

Tôi không thấy bất kỳ mã có liên quan nào gây ra sự cố, có thể nó nằm trong tệp khác? Bạn có một con trỏ rỗng ở đâu đó và có thể đang cố gắng như sau: 'variable ['1']' –

+0

bạn có trong index.html của mình không? nó là một mã cần thiết để hiển thị mẫu. – cyan

+0

Vâng tôi làm .. Lemme Cập nhật mẫu HTML của tôi. – ChanX

Trả lời

9

Tôi cũng có lỗi tương tự này và tương tự như nhận xét từ @ChanX Tôi đã có một lỗi trong một thuộc tính ng-điều khiển. Trong trường hợp của tôi, tôi đã vô tình thêm một tên của một lớp css mà tôi đã dự định đặt thuộc tính class vào thuộc tính ng-controller do nhầm lẫn.

Giả thuyết của tôi là bạn có thể thấy lỗi này bất kỳ lúc nào có sự cố khi phân tích thuộc tính bộ điều khiển ng. Dù sao, tôi chắc chắn rất vui vì tôi tìm thấy điều này trên SO vì nó là một đầu trầy xước thực sự. Sẽ tốt nếu thông báo lỗi có nhiều thông tin hơn.

+1

cảm ơn nhận xét và câu hỏi của tôi cũng hữu ích cho người xem .. – ChanX

0

Điều này có vẻ là do bạn đang sử dụng url localhost. Có khả năng gỡ lỗi hoặc môi trường dev.

Và có một chức năng trên content_script.js đó là như sau:

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

Phần quan trọng là:

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

Đó kiểm tra liên kết hiện tại của bạn, trong trường hợp của bạn "http://localhost/ ..." cho một url hợp lệ như "http: // www .localhost/". Bởi vì đây không phải là trường hợp nó gây ra lỗi khi truy cập current_domain[1]current_domain không có giá trị.

+0

cảm ơn vì chức năng bổ sung. Tôi sẽ thực hiện điều này vào ứng dụng của tôi – ChanX

+0

Bạn không cần phải thực hiện bất cứ điều gì. Tỷ lệ cược là bạn sẽ không sử dụng localhost làm địa chỉ sản xuất. – ruisilva450

Các vấn đề liên quan