2013-06-19 34 views
8

Tôi khá chắc chắn đó là một cái gì đó ngu ngốc một lần nữa. Tôi đang học angularjs vì vậy tôi không nhận được đầy đủ phạm vi nhưng tôi nhận được ở đó. Tôi đã thử tất cả mọi thứ và thực sự tìm kiếm bất cứ điều gì tôi có thể tìm thấy nhưng không có gì dường như làm việc.Angularjs rootscope không cập nhật ngClass

Tôi đang cố gắng thực hiện lệnh ng-class = "..." trong tệp bố cục của mình nhưng biểu thức được đặt trong bộ điều khiển của tôi nhưng bằng cách nào đó biểu thức không được hiển thị. Nó được trả lại khi tôi đặt nó trong tập tin ng-view của tôi. Tôi nhận được rằng anh ấy chỉ ám chỉ một phần của tập tin nhưng tôi muốn anh ta làm cho ng-class trên ng-view là tốt. Điều này có thể hoặc là nó dễ dàng hơn để chỉ cần đặt trong một div bên trong các tập tin html một phần.

Simple tập tin html

<body> 
<ng-view ng-class="{ 'splash': splash=='splash' }"></ng-view> 
</body> 

điều khiển của tôi

angular.module('xxx.splash') 
    .controller('IndexCtrl', function($scope, $rootScope, config) { 
     $rootScope.splash = 'splash'; 

     $scope.login = function(e) { 
      alert('Soon. How soon? Very soon.'); 
     } 
    }); 

Trả lời

31

Khi bạn định nghĩa một biến trong phạm vi mục gốc, bạn không thể truy cập vào nó trong cùng một cách như bạn định nghĩa nó ở các địa phương phạm vi. $rootScope biến có thể được truy cập trong AngularJS mẫu sử dụng $root.<variableName>, vì vậy tập tin HTML của bạn nên được thay đổi như sau:

<body> 
<ng-view ng-class="{ 'splash': $root.splash=='splash' }"></ng-view> 
</body> 

Bạn có thể xem diffrence của $scope$rootScope trong này demo

+5

Tại sao nó không được gọi là " $ rootScope "ở phía html? –

+0

@DavidKarlsson vì nó đã là phạm vi. Mỗi phạm vi có một thuộc tính '$ root' trỏ vào' $ rootScope' trên mẫu bạn nhận được một số phạm vi cũng có con trỏ này, do đó tên. Mặc dù nó có thể ít khó hiểu hơn để đổi tên ... – estani

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