如何在页面中正确控制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 
+0

为什么不使用包含所有div和modal的全局'div',那么你可以在其上添加你的'ng-controller ='BlockController'',或者你可以简单地将它放在你的'body'标签上,在你的页面上没有其他控制器 – Khalid 2015-04-01 09:44:11

+0

如果使用全局不对,因为我认为每个控制器意味着分配函数lity。此外,我在页面上有一些控制器,所以它看起来像任何控制器都在'BlockController'里面。 – Sahe 2015-04-01 10:31:35

+0

但正如我所看到的,你的模态与你的'BlockConroller'有关,所以它应该被包含在那里,不是吗? – Khalid 2015-04-01 10:41:52

一个你可以做的是解决方案的为您的模态使用另一个控制器,其中包含自己的功能

<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() 
+0

也许使用'directive'? – Sahe 2015-04-01 13:43:40