我已经完成了一项服务,该服务从服务器获取一个json文件,其中包含我的webapp标签的翻译值。似乎工作正常:
mobilityApp.service('serveiTraduccions', function($resource) {
this.getTranslation = function($scope) {
var languageFilePath = 'traduccions/traduccio_en.json';
$resource(languageFilePath).get(function (data) {
$scope.translation = data;
});
};
});
我想要做的是访问" $ scope.translation"从我的控制器,我尝试了所有,没有任何工作。如您所见,对象保存在我的$ scope中:
如何获取" registroBtnRegistro"," registroErrorRegistro"的值?等?
提前致谢!
我试过了:
console.log($scope.translation);
- >未定义console.log($scope['translation']);
- >未定义console.log($scope.translation.registroBtnRegistro);
- >类型错误:
无法阅读财产&reganstroBtnRegistro'未定义的
的console.log($ scope.translation [' registroBtnRegistro']); - >类型错误:
无法阅读财产&reganstroBtnRegistro'未定义的答案 0 :(得分:1)
也许您正在尝试从另一个$ scope中访问这些值,这些值不会继承您创建翻译模型的范围。
尝试将此模型直接分配给$ rootScope,以便您可以从每个范围访问它:
mobilityApp.service('serveiTraduccions', function($resource, $rootScope) {
this.getTranslation = function() {
var languageFilePath = 'traduccions/traduccio_en.json';
$resource(languageFilePath).get(function (data) {
$rootScope.translation = data;
});
};
});
答案 1 :(得分:0)
这个答案是盲目的尝试,因为你的原始帖子缺少基本信息,如来自控制器的呼叫。 我们可以对它进行改进,直到我们开始工作。
首先,你应该从你的方法中返回一些东西:
mobilityApp.service('serveiTraduccions', function($resource) {
this.getTranslation = function() {
var languageFilePath = 'traduccions/traduccio_en.json';
return $resource(languageFilePath);
};
});
您使用的是$resource
,但您也可以使用基本的$http.get()
。至少它看起来不像是一个宁静的api。
在任何情况下,因为它是异步请求,它不会返回已翻译字符串列表,而是返回允许get
,delete
或更一般query()
等方法的资源“类” :
来自docs:默认方法是 {'get':{方法:'GET'}, 'save':{方法:'POST'}, 'query':{method:'GET',isArray:true}, 'remove':{method:'DELETE'}, '删除':{方法:'删除'}};
旁注:在服务中注入$scope
对我来说没有多大意义:服务用于封装组件中的通用逻辑。但是,您可以将范围实例作为参数传递。
然后,使用它的控制器应该注入服务并使用回调来获取结果(异步操作!):</ p>
TraduccioCtrl ... {
$scope.translation = {}; // avoid undefined when the view just loads
ServeiTraduccions.getTranslation.query(function (response) {
$scope.translation = response; // and angular's two-way data binding will probably do the rest
});
}
Angular docs about ng-resource有一个有效的例子。 SO中的其他问题也已经解决了这个问题,例如Using AngularJS $resource to get data