我正在尝试将语言常量从服务加载到指令并将其显示给用户。 我发现如果我只在div中使用{{}},那么文本就不会呈现。 但是,通过添加任何字符,即'。'将使它加载。
如果有人能够解释,幕后发生的事情以及为什么我需要那些额外的角色,我将不胜感激。
指令代码
directive('projectHeader', ['LangService', function(langService) {
return {
restrict: 'E',
replace: true,
scope: true,
link: function postLink($scope, tElement, tAttrs, controller) {
$scope.lang = langService.getLocalisedStrings();
},
templateUrl: "app/header.html"
};
}])
header.html中
<div class="header">{{lang.header}}.</div>
LangService定义
angular.module('project.services').factory('LangService', ['$http', function ($http) {
var langConstants;
return {
init: function(lang) {
$http.get("app/lang/"+ lang + ".properties").then(function(response){
langConstants = response.data;
});
},
getLocalisedStrings: function () {
return langConstants;
}
};
}]);
答案 0 :(得分:0)
您可能在postLink和init方法中的$ http之间进行竞争。尝试在指令中的getLocalisedStrings()上添加一个监视器,以便getLocalisedStrings()返回一些数据后立即更新$ scope.lang。