【发布时间】:2014-03-30 06:57:05
【问题描述】:
问题: 我想使用 Angular UI Bootstrap modal 创建一个模态灯箱
详情: 我使用 ng-repeat 构建了一个照片网格。每张重复的照片都使用 open() 方法打开模式。我正在努力解决如何将单击项目的范围传递给模式,以便我可以获取要显示的图像 url。我已经在模式上实现了范围参数,这使我可以访问父级;然而,父级是单击项目的父级范围,并包含网格中所有图像的整个数组。我需要弄清楚如何(以编程方式)告知单击了哪个索引,或者仅将子范围发送到模态。我是新手...如果我遗漏了什么或者有更好的方法来解决这个问题,欢迎提供任何帮助。
我的 HTML:
<section ng-controller="ModalDemoCtrl">
<div ng-repeat="photo in photos.data">
<img src="{{photo.source}}" class="thumbnail img-responsive" ng-click="open()">
</div>
</section>
实例和控制器:
app.controller('ModalDemoCtrl', function ($scope, $modal, $log) {
$scope.items = ['item1', 'item2', 'item3'];
$scope.open = function (scope) {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
scope: $scope,
controller: ModalInstanceCtrl,
resolve: {
items: function () {
return $scope.items;
},
// this returns as undefined
photo: function(){
return $scope.photo;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
});
var ModalInstanceCtrl = function ($scope, $modalInstance, items, photo) {
$scope.items = items;
$scope.photo = photo;
$scope.selected = {
item: $scope.items[0]
};
$scope.ok = function () {
$modalInstance.close($scope.selected.item);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
console.log($scope);
};
这基本上是范围的外观。我需要的项目索引被埋得很深,我需要知道(以编程方式)点击了哪一个。我需要索引 [0] 的来源
$scope
--$parent
---$parent
----$photos
-----$$v
------data
-------0
--------Source
-------1
-------2
-------3
-------4
-------5
-------6
-------7
-------8
【问题讨论】:
标签: javascript angularjs angularjs-scope angular-ui-bootstrap