2015-10-16 71 views
0

我正在制作一个带有角度的动态网页,主页面的内容应该改变,但是为了避免编写太多的代码,我决定让它成为通用的,但要知道什么正在请求的内容类型,我需要从链接/按钮用ng-click发送这个参数,这不会是一个问题,但是当我必须更改控制器时,我无法读取参数。

ng-click="name='Name change'" 

在这里,我试图改变一个$ rootScope变量命名的名称,我想

ng-click="$rootScope.name='Name change'" 

即使有服务功能,但看起来像不工作(我不知道太很多关于angularjs所以我尝试)

ng-click="$service.cambiarTipo='Name change'" 

我犯了一个plunker http://plnkr.co/edit/1BN76SbUAHuOSHs02gpL?p=preview

如果哟你检查控制台日志,你会发现它的变量是未定义的,很明显,如果我从控制器中更改$ rootScope.name,我可以从其他控制器中看到它,但这没有用,因为我需要来自用户的源而不是控制器。

如何我可以从html更改rootScope变量?

回答

1

这里有一个使用两个控制器之间的共享服务,根本不使用$ rootcope。 http://plnkr.co/edit/maKNHgVH20GxTJeCEveh

请注意,ng-click正在调用服务功能。我假设这个函数是用来改变名字的。

ng-click="service.cambiarTipo('Name change')" 
1

你真的不应该使用$ rootScope那么多,更不用说从模板中修改它了。据说,你可以将$ rootScope赋值给$ scope变量,并像模板变量那样从模板中访问。 plunker

控制器: $scope.rs = $rootScope

模板: rs.name = 'Name Change'

我想重申,这是不是你应该做的,因为它违背了角的方式。

+0

如果不是角度的方式,我能做些什么来实现相同? –