我正在使用AngularJS 1.5,并使用“ $ emit”将事件发送到父控制器以刷新父控制器数据。在“ $ On”上,我编写了刷新父控制器数据的逻辑。
现在,父控制器数据正在更新,但此后将无法为触发“ $ emit”的子控制器绑定数据。
我曾尝试使用“ $ apply”,但这是说“ $ digest”已经在进行中。我还使用Batrang工具查看数据,它显示的页面包含所有这些数据,但未在UI上显示。
任何人都可以告诉我如何强制angular使用页面上可用的HTML Control绑定这些数据。
我不能在此处放置示例代码,因为它是一个实时项目,因此我必须创建一个示例项目来复制问题。即使如果没有示例代码也不容易回答我的查询,那么我将在一天内将示例代码放在Plunker上。
最佳答案
根据Angular文档,有两种方法可以在HTML中声明控制器:
一个使用ng-controller="SettingsController1 as settings"
将方法和属性直接绑定到控制器上
一个将$scope
注入控制器:ng-controller="SettingsController2"
第二种选择在Angular社区中更为常见,并且是
通常用于样板和本指南中。但是,有
将属性直接绑定到控制器的优势以及
避免范围。
使用controller as
可以清楚地知道您是哪个控制器
当多个控制器应用于一个模板时,访问模板
元件。如果您将控制器编写为类,则拥有
更轻松地访问属性和方法,这些属性和方法将显示在
范围,从控制器代码内部开始。因为总是有一个.
绑定,您不必担心原型继承
掩盖原语。
因此,您始终可以使用controller as
在子作用域中引用父作用域:
<div ng-controller="parentController as parent">
<span>{{parent.title}}</span>
<div ng-controller="childController as child">
<span>{{parent.title}}</span>
<span>{{child.title}}</span>
</div>
</div>