角度范围对象不更新

时间:2014-08-21 06:55:58

标签: angularjs angularjs-scope

我写了一个Angular模块进行翻译。此模块已成功使用我们的两个应用程序,但未使用新应用程序。

我们的新应用程序控制器就是这样 -

var app2 = angular.module("test", ["ngCookies", "Tranlater"]);

app2.controller("company", function ($scope, $cookies, $rootScope, translationService)            {

    $rootScope.currentLanguage = $cookies.SelectedLanguage;
    translationService.getTranslation($rootScope.currentLanguage, function (data) {
        $scope.translation = data;
    });
});

我尝试在视图中访问此翻译对象

{{translation.ChooseCompany}}

与我们的其他申请一样。 但它没有显示任何值:(

但是当我用angular调试器控制台检查范围时,它会显示 $ scope.translation 对象的值 enter image description here

翻译服务:

    this.getTranslation = function (language, callback) {
    if (language === undefined) {
        language = "en";
    }
    var languageFilePath = '/translation_' + language + '.json';
    if (!me.cache[language]) {
        $.ajax({
            type: 'get',
            url: languageFilePath,
            async: true,
            success: function (data) {
                me.cache[language] = data;
                if (typeof callback === "function")
                    callback(me.cache[language]);
            },
            error: function (data) {
                console.log(data);
            }
        });
    } else {
        if (typeof callback === "function")
            callback(me.cache[language]);
    }
};

1 个答案:

答案 0 :(得分:0)

问题在于$ scope。$ apply();

$rootScope.currentLanguage = $cookies.SelectedLanguage;
translationService.getTranslation($rootScope.currentLanguage, function (data) {
    $scope.translation = data;
    $scope.$apply();
});

这是解决方案