我想从视图范围传递一个变量($ scope.sort ) into the popover scope.
Once set in the popover, the variable 'goes out' of it with no issue though, with code below in
$ scope.closeSortPopover`。
我认为popover范围与它来自的控制器范围相同。 但似乎并非如此。 popover范围在哪里? 如果我从here正确理解,则popover范围是控制器范围的子节点。那么如何才能访问它??
仅供参考我的popover是<ion-radio>
的列表,在我的主视图中为大列表提供了不同的排序选项。
HTML:
<button ng-click="openSortPopover($event, sort)">
controllers.js
$ionicPopover.fromTemplateUrl('templates/computeSortPopover.html', {
scope: $scope
}).then(function(popover) {
$scope.sortPopover = popover;
});
$scope.openSortPopover = function($event, sort) {
$scope.sortPopover.show($event);
};
$scope.closeSortPopover = function(sort) {
$scope.sortPopover.hide();
$scope.sort = sort;
};
答案 0 :(得分:0)
在控制器js中,您将控制器的范围分配给弹出框的范围。因此,可以通过弹出视图访问控制器范围中的所有方法。换句话说,控制器视图和弹出窗口视图共享相同的范围。
事实上,您可能会认为这违反了mvc,因为一个控制器不能拥有两个视图,但是对于角度,您实际上可以不这样做。
要创建隔离范围,您唯一的选择是指令。
答案 1 :(得分:0)
我发现由于javascript继承,scope变量必须包含在要传递给继承范围的对象中。
所以不要这样:
$scope.sort = ....
我在我的控制器中声明了这一点:
$scope.data={};
$scope.data.sort = ....
并在我的html中使用(在初始视图和弹出模板中):
data.sort
显然在这里记录:https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance