Trong trường hợp đơn giản, tôi có hai trạng thái Giao diện người dùng-Router và muốn màu nền cơ thể khác nhau cho chúng.Nền thân máy khác nhau cho các trạng thái Giao diện người dùng khác nhau
Lý tưởng nhất, tôi sẽ như vậy, muốn làm như sau:
<body ng-class="background" ui-view>
</body>
và sau đó trong bộ điều khiển cho các tiểu bang thiết lập các lớp nền (có thể năng động, có nghĩa là: tính bằng bộ điều khiển):
stateHelperProvider
.state({
name: 'a',
url: '/a',
templateUrl: 'views/a.html',
controller: function ($scope) {
$scope.background = 'bg1';
}
})
.state({
name: 'b',
url: '/b',
templateUrl: 'views/b.html',
controller: function ($scope) {
$scope.background = 'bg2';
}
});
Nhưng đặt thuộc tính ui-view
trên cơ thể sẽ xóa nó. Vì vậy, tôi phải đặt thuộc tính ui-view
trên một div bên trong cơ thể.
<body>
<div ui-view></div>
</body>
Bây giờ tôi có thể kiểm soát nền cơ thể như thế nào?
Tôi biết các lỗi khác nhau (ví dụ: truy cập thuộc tính DOM lớp của phần thân trong chức năng onEnter
của UI-Router, ...), nhưng có cách nào tốt để làm điều đó không?
Hoặc là tất cả về việc làm cho chiều cao đầy đủ là div[ui-view]
(là not trivial) và đặt nền trên yếu tố này để bắt chước cách áp dụng background on the body takes up the full viewport?
Btw. [The Angular UI-Router tiêu đề plugin] (https://github.com/nonplus/angular-ui-router-title) để cập nhật tiêu đề trang nào [một cái gì đó tương tự] (https://github.com/nonplus/angular -ui-router-title/blob/master/src/angular-ui-router-title.js # L6) –
Điều này phù hợp với tôi! - Chỉ muốn chỉ ra rằng để làm cho nó hoạt động, bạn phải chạy '$ rootScope. $ State = $ state;' từ bên trong một '.run' khi bạn khai báo module của bạn. Điều này được đề cập và in đậm trong câu đầu tiên của câu trả lời nhưng không có ví dụ nào được đưa ra. Bạn có thể tìm thấy mã ví dụ bằng cách theo liên kết này http://stackoverflow.com/questions/18572930/whats-the-purpose-of-setting-rootscope-state-state-with-angular-ui-ui-rou cũng được cung cấp trong câu trả lời –