Wpis z mikrobloga

mam sobię funkcję

function TranslateCtrl ($translate, $scope) {

$scope.changeLanguage = function (langKey) {
$translate.use(langKey);
};

};

i chcę $scope zamienić na vm = this;
Robię coś takiego, ale nie działa. Gdzie mam błąd?

function TranslateCtrl ($translate, $scope) {
var vm = this;
vm.changeLanguage = changeLanguage;

function changeLanguage (langKey) {
return translate.use(langKey);
};

};
#javascript #angularjs
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Marmite: w widoku strony mam 2 ikony, które odpowiadają za zmianę języka. Gdy używam scope wartości, które sobie podałem zmieniają język. Gdy chcę użyć vm po kliknięciu na ikonki nic się nie dzieje. Konsola nie wywala błędów.
  • Odpowiedz
Konsola nie wywala błędów.


@TeflonDon: Generalnie widoki w Angularze nie rzucają żadnych błędów, co jest ssące bardzo mocno. Ale zapytam jeszcze raz: czy użyłeś controllerAs? Np w taki sposób:
``
  • Odpowiedz
@mjurkowski: Nie. Lexical declaration environment jest wypełniany deklaracjami funkcji jeszcze przed wykonaniem kodu funkcji. Ten kod:

var x = A;
function A() {}
i
  • Odpowiedz
@TeflonDon: No dobra, ale teraz musisz napisać ng-click="translateCtrl.changeLanguage('en')"
Wynika to z tego, że wyrażenia w szablonach są rozwiązywane względem zmiennej $scope. A w twoim scope jest tylko translateCtrl
  • Odpowiedz