góc 1,5 giới thiệu components (loại đặc biệt của chỉ thị)phần tiêm điều khiển góc vấn đề
Đối với chỉ thị chúng ta có thể viết:
app.directive('myDirective',
['$timeout','$mdToast','$rootScope', // <-- injection
function ($timeout, $mdToast,$rootScope) {
return {
link: {},
//...
}
}
Làm sao chúng ta có thể viết tiêm cho các thành phần?
Chắc chắn tôi có thể viết, một cái gì đó như:
app.component('myComponent', {
restrict: 'E',
bindings: {
data: '='
},
templateUrl: 'template.html',
controllerAs: 'vm',
controller: 'myComponentCtrl'
});
và:
app.controller('myComponentCtrl',
['$scope', '$timeout',
function ($scope, $timeout) {
// ....
}]);
Nhưng tôi muốn viết build-in điều khiển, như:
app.component('myComponentCtrl', {
templateUrl: 'template.html',
controller: function($scope, $timeout) {
//...
}
});
Minifying style được đề cập ở trên (GRUNT) sẽ phanh mã của tôi Unknown provider: aProvider <- a
,
Vì vậy, cách viết đúng cách cho các thành phần?
Bất kỳ ý tưởng nào?
Bản demo tôi sử dụng Plunker
có, tùy chọn thứ nhất là hình thức khá xấu, đồng ý với 'ng-chú thích'. –
Tôi thích ví dụ sạch hơn nhưng tôi không thể hiểu được nó. Tại sao bạn đặt thuộc tính $ inject trên myComponentCtrl trước khi thực sự tạo đối tượng? Ngoài ra bạn đang asigning bộ điều khiển cho một thành phần tuyên bố trước khi thực sự tuyên bố chức năng điều khiển. Nó sẽ hoạt động như thế nào? Tôi nghĩ rằng một cái gì đó là mất tích từ ví dụ sạch hơn. – Liviu
@Liviu Google "javascript cẩu". TL; DR: JavaScript var và khai báo hàm được "hoisted" lên trên cùng của phạm vi, vì vậy bạn có thể khai báo một hàm bất cứ nơi nào trong mã của bạn và truy cập nó theo cách tương tự như bạn đã khai báo nó ngay từ đầu hiện tại phạm vi. –