如何在页面中正确控制AngularJS的语言环境?
有一些项目在div
页:所有项目后如何在页面中正确控制AngularJS的语言环境?
<body>
<div id="block">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<div class="modal"></div>
</body>
而且一个模块class="modal"
。
我想,经过点击.item
显示模式块, 为了这个,我已在母块id="block"
添加ng-controller="BlockController"
:
<div id="block" ng-controller="BlockController">
...
</div>
在模块有一些按钮,我想在控制器添加哪些方法实现Block Controller
,但模态不在可见控制器的边界。
我可以将同样的控制器添加到:<div class="modal" ng-controller="BlockController"></div>
以在一个控制器中实现通用功能吗? 我试图做到这一点,但得到可见$scope
变量的麻烦在这种情况下:
AnJS
$scope.ClickSpam = function (id, type){
$scope.id = id; // have value id
}
HTML模板:
{{id}} // here is not displayed value
一个你可以做的是解决方案的为您的模态使用另一个控制器,其中包含自己的功能
<div class="modal" ng-controller="ModalController"></div>
目前,BlockConroller
里面,你仍然可以访问的ModalController
的$scope
这样的:
angular.element($(".modal")).scope(); // returns ModalController's $scope
请注意,你有,如果你有很多情态动词 与不同的控制器使用一个ID在你的模式。
那么你的代码将是这样的:
的html代码:
<div class="modal" id="modalId" ng-controller="ModalController"></div>
javascript代码:
angular.element($("#modalId")).scope(); // returns ModalController's $scope
你可能会发现另一个问题,是你改变一个变量,它是从你的BlockController的ModalController范围是这样的:
angular.element($(".modal")).scope().id = "something";
您{{ id }}
约束力,除非你调用$apply
方法不起作用:
angular.element($(".modal")).scope().$apply()
也许使用'directive'? – Sahe 2015-04-01 13:43:40
为什么不使用包含所有div和modal的全局'div',那么你可以在其上添加你的'ng-controller ='BlockController'',或者你可以简单地将它放在你的'body'标签上,在你的页面上没有其他控制器 – Khalid 2015-04-01 09:44:11
如果使用全局不对,因为我认为每个控制器意味着分配函数lity。此外,我在页面上有一些控制器,所以它看起来像任何控制器都在'BlockController'里面。 – Sahe 2015-04-01 10:31:35
但正如我所看到的,你的模态与你的'BlockConroller'有关,所以它应该被包含在那里,不是吗? – Khalid 2015-04-01 10:41:52