Tài liệu của AngularJS app.run ()?


337

Làm thế nào và ở đâu được app.run()sử dụng? Sau định nghĩa mô-đun, sau app.config()hay sau app.controller()?

Tôi đang áp dụng BreezeJS Angular Q , hỏi xem một số mã nhất định có thể chạy trong app.run()hàm không.


2
và sau khi bất kỳ mô-đun góc nào .constants () đã được đặt
alfonsob 18/12/13

Câu trả lời:


650

Đây là lệnh gọi:

  1. app.config()
  2. app.run()
  3. các hàm biên dịch của directive (nếu chúng được tìm thấy trong dom)
  4. app.controller()
  5. chức năng liên kết của chỉ thị (một lần nữa, nếu tìm thấy)

Đây là một bản demo đơn giản , nơi bạn có thể xem từng người thực hiện (và thử nghiệm nếu bạn muốn).

Từ các tài liệu mô-đun của Angular :

Chạy các khối - được thực hiện sau khi trình tạo được tạo và được sử dụng để khởi động ứng dụng. Chỉ các thể hiện và hằng số có thể được tiêm vào các khối chạy. Điều này là để ngăn chặn cấu hình hệ thống hơn nữa trong thời gian chạy ứng dụng.

Chạy khối là điều gần nhất trong Angular với phương thức chính. Khối chạy là mã cần chạy để khởi động ứng dụng. Nó được thực thi sau khi tất cả các dịch vụ đã được cấu hình và trình tạo đã được tạo. Các khối chạy thường chứa mã khó kiểm tra đơn vị và vì lý do này nên được khai báo trong các mô-đun bị cô lập, để chúng có thể bị bỏ qua trong các thử nghiệm đơn vị.

Một tình huống trong đó các khối chạy được sử dụng là trong quá trình xác thực .


4
@KayakDave Tôi không chắc đây có phải là chủ đề không nhưng liên quan đến thứ tự chạy mà bạn đã đề cập ở trên, khi nào Dịch vụ sẽ được bắt đầu và khi nào chúng sẽ được chạy?
jonnie

3
Có thể hơi muộn để giúp bạn @jonnieM, nhưng các dịch vụ sẽ được thực thi tùy thuộc vào thời điểm chúng cần trước - tức là nếu trước tiên bạn cần một dịch vụ trong khối chạy, nó sẽ thực thi ngay trước khối đó. Đối với các nhà cung cấp, thật khó chịu, họ sẽ chạy trước hoặc sau các khối cấu hình - tùy thuộc vào thứ tự họ đến trong mã. Xem xét rằng lần duy nhất bạn trực tiếp sử dụng nhà cung cấp là ở giai đoạn cấu hình, điều này có vẻ không đúng.
Zac Seth

2
xin chào, tôi đã rẽ nhánh và sửa đổi mẫu fiddle của bạn để hiển thị tải của nhà máy: jsfiddle.net/lorezz/4cxgpLqj/1
Lorezz 16/2/2015

1
Tuyệt vời. Để được kỹ lưỡng, các hàm app.constant () được gọi trước mọi thứ ... Và app.factory () và các hàm dịch vụ khác được gọi "một cách lười biếng". Nói cách khác, Angular sử dụng các chức năng được cung cấp để tạo một thể hiện dịch vụ chỉ khi bộ điều khiển hoặc dịch vụ khác cần nó được tiêm, ngay cả khi đó là rất lâu sau khi ứng dụng được khởi chạy.
Niko Bellic

Trong một dự án Ionic, theo mặc định chạy được gọi trước khi cấu hình. Tại sao vậy ?
Rayjax

28

Đặc biệt...

Làm thế nào và ở đâu được app.run()sử dụng? Sau định nghĩa mô-đun hay sau app.config(), sau app.controller()?

Ở đâu:

Trong gói.js của bạn, vd /packages/dashboard/public/controllers/dashboard.js

Làm sao:

Làm cho nó trông như thế này

var app = angular.module('mean.dashboard', ['ui.bootstrap']);

app.controller('DashboardController', ['$scope', 'Global', 'Dashboard',
    function($scope, Global, Dashboard) {
        $scope.global = Global;
        $scope.package = {
            name: 'dashboard'
        };
        // ...
    }
]);

app.run(function(editableOptions) {
    editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default'
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.