gpt4 book ai didi

javascript - Angular JS 1.5 - 我想在 Angular js 组件之间进行通信

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:48:26 24 4
gpt4 key购买 nike

我正在尝试将 businessPhotos 组件的 deletePhotoeditPhoto 方法公开到 verticalGrid 组件中。但有些方法无法访问。

任何帮助将不胜感激,谢谢

photo.js

angular.module('business')
.component('businessPhotos', {
templateUrl: 'business/photos.html',
controller: [ function() {
var $ctrl = this;
$ctrl.editPhoto = function(photo) {
// code
};

$ctrl.deletePhoto = function(id) {
// code
};
}]
});

photo.html

<vertical-grid ng-if="$ctrl.business.provider_photos" cells="$ctrl.business.provider_photos" delete-photo="$ctrl.deletePhoto(id)" edit-photo="$ctrl.editPhoto(photo)"></vertical-grid>

vertical-grid.js

angular.module('dashboard')
.component('verticalGrid', {
bindings: {
cells: '<',
deletePhoto: '&',
editPhoto: '&'
},
templateUrl: 'utils/vertical-grid.html',
selector: 'vertical-grid',
controller: ['$element', function($element) {

var $ctrl = this;

$ctrl.colGrid = [];
var numOfCols = 4;
var numOfCells = $ctrl.cells.length;

$ctrl.colCssClass = 'col-xs-3';


for (var i = 0; i < numOfCells; i++) {
var colIndex = i % numOfCols;
if (!$ctrl.colGrid[colIndex]) {
$ctrl.colGrid[colIndex] = [];
}
$ctrl.colGrid[colIndex].push($ctrl.cells[i]);
}
}]
});

vertical-grid.html

<div class="provider-photos row">
<div class="{{$ctrl.colCssClass}}" ng-repeat="col in $ctrl.colGrid track by $index">
<div class="photo-outer-tile" ng-repeat="cell in col track by $index">
<div class="photo-tile">
<img ng-src="{{cell.tile_url}}">
<div class="photo-controls">
<a ng-click="$ctrl.deletePhoto(cell.id)" href="javascript:void(0);">Delete</a>
<a href="javascript:void(0);">Crop</a>
</div>
</div>
</div>
</div>
</div>

最佳答案

您的组件是嵌套的。子组件可以使用 require

调用父组件的函数

例子:

  .component('verticalGrid', {
require: {
parent: '^^businessPhotos'
},
controller: function () {
this.$onInit = function () {
this.parent.editPhoto();
};
},

$onInit 是告诉 Angular 等待组件加载完成所必需的。

^^businessPhotos 将引用本地父组件。单个 ^ 也是可能的。

关于javascript - Angular JS 1.5 - 我想在 Angular js 组件之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38076131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com