Po godzinach frustrujących wyszukiwań czuję, że muszę przesłać moje pytanie tutaj. Z góry przepraszam, jeśli na to pytanie odpowiedziano wcześniej, ale żadne z moich wyszukiwań nie pomogło do tej pory. Oto moje pytanie:Jak zmienić dane AngularJS poza zakresem?
Mój kod JavaScript tworzy obiekt, który jest modyfikowany i monitorowany przez AngularJS. W przypadku niektórych zdarzeń (takich jak wczytanie poprzedniego ustawienia obiektu), chcę zmienić właściwości tego obiektu spoza zakresu. Problemem jest to, że wejścia nie zmieni ...
Oto przykład, jak pragnę przeprowadzić te zmiany:
HTML kod:
<div ng-app="myApp" ng-controller="FirstCtrl">
<input type="number" ng-model="data.age">
<h1>{{data.age}}</h1>
<input type="button" value="Change to 20" ng-model="data" onclick="change()">
kodu JavaScript :
var person = {
age: 16
};
// Create module
var myApp = angular.module('myApp', []);
myApp.factory('Data', function() {
return person;
});
function FirstCtrl($scope, Data) {
$scope.data = Data;
}
function change() {
person.age = 20;
}
Po naciśnięciu przycisku "Zmień na 20" nic się nie dzieje. Jak mogę zmienić wiek osoby z funkcji change
?
To działa idealnie! Dziękuję Panu bardzo. Ilekroć zmieniam właściwości mojego obiektu poza kontrolerem, muszę to zrobić. Czy to nie dziwne? – gromit190
@BirgerSkogengPedersen Angular może być bardzo miły i zwięzły, gdy używasz kodu, który jest w całości napisany w stylu Angular (co w tym przypadku oznaczałoby użycie 'ng-click' z metodą zdefiniowaną w twoim zasięgu), ale masz rację : może być dość gadatliwy, gdy musisz komunikować się między innym kodem JavaScript i Angular. Obawiam się, że nie mam wystarczająco dużo doświadczenia z Angular, aby naprawdę komentować, jak sobie z tym poradzić. –
Ah, pokonaj mnie .scope() Jeremy! Jeśli chodzi o twoje pytanie, @BirgerSkogengPedersen, tak, to jest jedna z głównych skarg na kątowe - ogólna odpowiedź kątowa polega na tym, że jeśli modyfikujesz zakresy używając zewnętrznego kodu, to nie jesteś przyzwyczajony do MVC i sprawiasz, że twój kod jest mniej łatwy w utrzymaniu. Wydaje mi się, że pojawia się to najczęściej podczas pracy z innymi bibliotekami stron trzecich, które są wymagane przez projekt, a często najlepszym sposobem na ich obsługę jest dołączenie funkcji stron trzecich w zasięgu globalnym lub w funkcjach kompilacji i linkowania niestandardowej dyrektywy. dla tego. – MaxPRafferty