我很难确定如何访问子范围数据。 我正在使用路由和ui-views来创建项目的流程,我有“向导”,它是父项,还有更多的子状态,每个都有不同的控制器。
这是我的“Wizard.html”文件,其中包含子视图的ui-view。
<div class="header">
<button ng-click="someFunction()">Back</button>
<button ng-click="createProject()">Next</button>
</div>
<div class="wizard-children-view" ui-view></div>
<div class="footer">
</div>
这些是路线:
.state('wizard', {
url: '/wizard',
abstract: true,
views: {
'wizard': {
templateUrl: 'wizard.html',
controller: 'WizardController'
}
}
})
.state('wizard.project', {
url: 'project',
controller: 'ProjectController',
templateUrl: 'project.html'
})
.state('wizard.aboutus', {
url: 'aboutus',
controller: 'AboutUsController',
templateUrl: 'aboutus.html'
})
在我的向导标题(这是父母)中,我有一个顶部栏,其中“后退”和“下一步”操作按钮一直停留在屏幕上。
我正在尝试使用这些按钮访问并在其中一个孩子中做一些事情。举个例子,我想让一个函数“Next”按钮调用一个验证子视图中的表单并创建一个新项目的函数,但问题是带有ng-click="createProject()"
的按钮在父作用域中,所有表单的数据都在子范围内,所以它是未定义的..
可以吗?
答案 0 :(得分:0)
您可以使用子控制器中的$emit
:
$scope.$emit("foo", {name: "bar"});
现在,在您的父控制器中:
$scope.$on("foo", function(e, data) {
// data.name == "bar"
});
https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope