首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角Modal>Ctrl>Service>Ctrl继承不工作

角Modal>Ctrl>Service>Ctrl继承不工作
EN

Stack Overflow用户
提问于 2014-10-27 09:40:42
回答 1查看 78关注 0票数 1

我正在尝试将模型链接到服务,这将允许我在整个应用程序中更新全局模型,但是它似乎没有像预期的那样工作。

我最近已经开始研究AngularJS,所以我可能误解了我的代码,但是,从我的理解来看,服务将作为一个实例来工作,而不是工厂的单个实例,它应该允许我使用一个服务来控制所有的$scoped模型。

我正试着像这样把我的模特锁起来:

模型: {{ language.title }}

>>> ctrl1: $scope.language = langSrvic.store;

>>> srvic: langSrvic.store = myFactory;

>>> ctrl2: langSrvic.set('locale','fr');

>>>语言实例存储更新(应反映控制器1模型中的更改)

我的工作代码的jsFiddle

代码语言:javascript
复制
//Application
var app = angular.module('app',[]);

//Controller 1
app.controller('first', ['$scope', 'language', function($scope, language){
	$scope.language = language.store;
    setTimeout(function(){
        console.log($scope.language.title); //My application
        console.log(language.store.title); //Something something french
    }, 1500);
}]);

//Language service
app.service('language', ['i18n', function(i18n){
	return {
		locale: 'en',
		store: i18n['en'],
		set: function(prop, val){
			this[prop] = val;
			this.store = i18n[this.locale];
		}
	}
}]);

//Factory - storing instead of an api temporarily
app.factory('i18n', [function(){
	return {
		en:{
			title: 'My application'
		},
		fr:{
			title: 'Something something french'
		},
	}
}]);

//Controller 2 - changing locale to fr which should update the instance store and so update the first scope
app.controller('second', ['$scope', 'language', function($scope, language){
    language.set('locale', 'fr');
    $scope.language = language.store;
}]);
代码语言:javascript
复制
<div ng-controller="first">
    {{ language.title }}
    <div ng-controller="second">
        {{ language.title }}
    </div>
</div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-27 09:46:42

您正在引用一个不同的store对象:

代码语言:javascript
复制
set: function(prop, val){
    this[prop] = val;
    this.store = i18n[this.locale]; // this line sets language.store to the new object but Controller 1 is referencing the old one
}

有关修复:http://jsfiddle.net/3c7ube0s/1/,请参阅更新的小提琴

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26584660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档