Я знаю, что есть способ заставить директивы общаться друг с другом. Вы можете сделать это с помощью контроллеров. Моя проблема в том, что у меня есть 2 директивы на странице, я создаю приложение для загрузки, я использую директиву изменения файла, которая определяет, использовался ли ввод файла для выбора файла, и директиву, которая создает зону перетаскивания для перетаскивания файлы оба рабочие.
Но как мне заставить приложение определить, используется ли на странице директива dropzone или filechange? Я создал фабричный метод и использую службу данных с массивом, чтобы вставлять имена директив в массив. но когда это происходит, хотя оба находятся на странице, регистрируется только один? Как это исправить? это асинхронная проблема?
вот мой uploader3.js
var app = angular.module("uploader", []);
app.factory('data', function(){
return {
directives:[],
progressBarSet:false,
getData:function(){
return this;
}
}
});
app.directive("dropzone", ["data", function (data) {
return {
restrict: "A",
controller: function($scope){
},
priority: 0,
link: function (scope, element, attr, ctrl) {
data.directives.push("dropzone");
console.log(data.directives);
}
}
}]);
app.directive("filechange", ["data", function (data) {
return {
restrict: "A",
controller: function($scope){
},
priority: 1,
link: function (scope, element, attr, ctrl) {
data.directives.push("filechange");
console.log(data.directives);
}
}
}]);
вот мой хтмл.
<!doctype html>
<html ng-app="uploader">
<script src="Scripts/angular.min.js"></script>
<script src="app/uploader3.js"></script>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body dropzone>
<input type="file" name="FILEDATA" id="FILEDATA" accept="image/jpg, image/jpeg" filechange>
</body>
</html>
Когда я регистрирую data.directives, он показывает, что его длина равна 1? как мне применить push и получить обе директивы для регистрации в моей службе данных?
Есть ли лучший способ выяснить, какие директивы на самом деле применяются на странице? Мне нужно выполнить следующий набор кода в зависимости от того, реализована ли на странице директива dropzone или изменения файла или используются оба.