Widziałem wiele pytań dotyczących tej kwestii, ale nie rozwiązanie Próbowałem pracuje:Wywołanie angularjs funkcję z poza zakresem kątowym App
Wewnątrz folderu publicznego Mam app plik o nazwie js gdzie mogę określić moje angularjs aplikację tak:
var app = angular.module('app', []);
var RectangleDim=30;
app.controller('MainCtrl', function($scope, $http) {
i w końcu pliku zrobić bootstrap jak:
angular.bootstrap(document.getElementById('body'), ["app"]);
Następnie, w tym samym folderze, a wewnątrz t On HTML mój punkt wyjścia dla zastosowania angularjs jest tak:
<div id="body">
<div ng-controller="MainCtrl">
<div class="col-sm-6 col-md-6 col-lg-6" style="background-color: #D2D7D3">
<div style="padding:25px;">
Następnie w innym folderze, mam innego pliku JS, gdzie muszę wywołać określoną funkcję, która jest zdefiniowana w kodzie angularjs. Funkcja nazywa się Draw() i uruchamia się po kliknięciu przycisku AngularJS.
po prostu wywołać funkcję wewnątrz innego pliku bez klikania na jakikolwiek przycisk robię coś takiego:
var e = document.getElementById('body');
var scope = angular.element(e).scope();
// update the model with a wrap in $apply(fn) which will refresh the view for us
scope.$apply(function() {
scope.Draw(NumQuest);
});
//fim
EDIT: Aby uczynić moje pytanie nieco bardziej jasne, mogę być może dodać kilka dodatkowych szczegółów:
Potrzebuję tylko jednego kontrolera i jednego modułu kontrolującego całą moją aplikację, ponieważ wszystkie wymagane działania (które wywołują 3 funkcje, które aktualizują obraz SVG) są względnie samodzielne, więc nie mogę Sądzę, że istnieje potrzeba dodania złożoności do kodu po stronie klienta, który może tylko mylić ja i inni ludzie pracujący ze mną.
Aby przywołać to, czego potrzebuję:
wewnątrz pojedynczej aplikacji, za pomocą jednego kontrolera, mam jedną funkcję, Draw (someInputValue), który jest generowanie rysunku SVG. Dane wejściowe dla tej funkcji są odbierane z pola wprowadzania tekstu.
W innym pliku mam akcje JS, które są wykonywane po kliknięciu innego pola tekstowego (na przykład, pokaż alert lub utworzenie dodatkowego pola tekstowego). To, czego chcę, to powiązanie wywołania funkcji Draw (input) po kliknięciu pola tekstowego.
Mianowicie, chcę zasymulować zachowanie, które mam, gdy kliknę przycisk, który odczytuje liczbę z pola tekstowego i wykonuje pewne czynności, ale zamiast tego, wprowadzanie danych wprowadzanych ręcznie na polu tekstowym i kliknięciu na przycisku chcę po prostu kliknąć pole tekstowe i wykonać tę samą akcję.
konieczności uciekania się do pobierając zakresu kątowego za pomocą elementu DOM jest zapach kod, który jesteś może nie stosując odpowiednio kątowa . Czy istnieje szczególny powód tej architektury (np. Dlaczego ten inny plik nie jest komponentem kątowym)? – doldt
Dodawanie komentarza i głosowanie do @doldt. Dobrą praktyką jest świadomość zapachów kodu. Zwykle, gdy coś jest naprawdę brzydkie, aby je rozwiązać, wykracza to poza ogólne zasady projektowania i trzeba być bardzo ostrożnym, aby wybrać tę trasę. Nie można tego wystarczająco podkreślić, stąd dodatkowy komentarz. Dla przyszłych czytelników tego tematu, proszę wyjaśnić, dlaczego naprawdę tego potrzebujesz? Nie ma innych rozwiązań projektowych? – bastijn
Co próbujesz osiągnąć tutaj, używając Angular do "nie używać Angular"? – Claies