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
@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.
@Marmite: @mjurkowski: @bonus:
cały kod kontrolera

'use strict';

angular.module('translateApp',['pascalprecht.translate'])
.controller('TranslateCtrl', TranslateCtrl);
TranslateCtrl.$inject =['$translate','$scope'];

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

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

vm.changeLanguage = changeLanguage;

};
@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