2013-04-25 35 views
22

$viewContentLoaded không bao giờ cháy trong bộ điều khiển Góc của tôi. Sau đây:

function MyController($scope) 
{ 
    $scope.$on('$viewContentLoaded', function() 
    { 
     alert("blah"); 
    }); 
} 

Không được chạm vào điểm ngắt và không bao giờ bật lên cảnh báo. Tôi nghĩ rằng đây là cách sử dụng khá chuẩn, vì vậy tôi không chắc nó có thể là gì, nhưng nó chắc chắn không bắn. Mọi thứ khác trong bộ điều khiển đều hoạt động bình thường.

Điều gì sẽ gây ra điều này?

+1

Bất cứ điều gì trong các lỗi giao diện điều khiển? – Jordan

+1

@MikePateras Bạn có đang khởi tạo bộ điều khiển trong chế độ xem của mình không? –

+1

Jordan, không có gì trong bảng điều khiển (không có lỗi hoặc cảnh báo nào cả). RickCigarette, tôi ràng buộc nó trong html qua ng-controller, nếu đó là ý của bạn. –

Trả lời

23

Căn cứ vào nhận xét của bạn ở trên, có vẻ như bạn có một cái gì đó như thế này:

<ng-view> 
    <div ng-controller="MyController"></div> 
</ng-view> 

Tôi không chắc chắn những gì nội dung trong thẻ ng xem sẽ làm, nhưng $viewContentLoadedphát ra từ phạm vi ng-view. Điều này có nghĩa, nó chỉ đi lên từ ng-view và do đó bộ điều khiển của bạn sẽ không bao giờ bắt được nó.

+4

Yup, chỉ cần tìm ra rằng bản thân mình, và thực sự nó hoạt động khi bộ điều khiển bên ngoài ng-view. Hóa ra những gì tôi muốn là includeContentLoaded. Cảm ơn! –

3

Tôi đã giải quyết điều này bằng cách chỉ định bộ điều khiển trong nhà cung cấp tuyến đường app.js thay vì sử dụng bộ điều khiển ng trong div trong chế độ xem. Tôi chỉ sử dụng phương pháp này nếu tôi cần sử dụng $ viewContentLoaded, nếu không tôi sử dụng ng-controller.

angular.module('myapp', [...]) 
.config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
     .when('/MyRoute', {templateUrl: 'views/MyView.html', controller: MyController}) 
    }); 
+0

Đây là giải pháp duy nhất giúp tôi, cảm ơn! – mrgoos

38

Hãy thử điều này thay vì:

function MyController($scope) 
    { 
     $scope.$watch('$viewContentLoaded', function() 
     { 
      alert("blah"); 
     }); 
    } 
+2

Nó hoạt động cho tôi. Cảm ơn bạn –

+4

điều này không hoạt động. DOM chưa được hiển thị với css được áp dụng. Tôi đã phải quấn 'alert' ('blah') 'trong' $ timeout (fn, 0) 'để có được một trang được hiển thị đầy đủ. Chế độ xem được tải bởi chưa được phân tích theo góc. – chovy

+2

chovy, yea. phụ thuộc vào những gì bạn đang cố gắng làm. bạn có thể phải làm điều này thay vì nếu bạn muốn chờ đợi cho css để tải vv $ phạm vi. $ đồng hồ ('$ viewContentLoaded', function() { \t \t \t \t \t $ timeout (function() { \t \t \t \t \t \t \t alert ("blah blah"); \t \t \t \t \t \t}, 500); \t \t \t \t}); – CodeOverRide

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