所以我对Angular还有些新意,我遇到了一个非常讨厌的问题。
我有一个如此定义的变量:
$scope.selectedMemberCell = {};
当您单击不同的DOM元素时,会填充此内容。您可以分配新值。就我而言,它是一个图像参考。
<div ng-show="member.selected && overlayActive"
ng-style="{left: selectedMemberCell.positionInfo.left + 10}">
<div>
<div class="mediaButtons-container">
<a class="b-icon media" ng-click="setEditBlock(selectedMemberCell.imgBlock);">
</a>
</div>
</div>
</div>
上面的块是我想要使用的功能。它基本上是一个基于您单击元素位置的内嵌图像选择器,并将使用其他数据填充selectedMemberCell
。
$scope.$watchCollection("selectedMemberCell.imgBlock.data", function () {
if ($scope.selectedMemberCell.imgBlock) {
if ($scope.selectedMemberCell.imgBlock.data[0]) {
var imgId = $scope.selectedMemberCell.imgBlock.data[0].id;
api.getRawImage(imgId, $stateParams.ownerid).then(function (result) {
$scope.selectedMemberCell.image = result.data.url.compressed;
$scope.selectedMemberCell.imageResourceId = imgId;
});
}
}
这是我想在分配新照片时触发的手表。这是我难倒的地方。当ng-show和ng-style在DOM中处于活动状态时,此手表永远不会激活。但是,如果我删除它们,它会触发。
以下块是setEditBlock函数链的结尾。这会在两种情况下触发。
addToCurrentMediaBlock: function (item, type) {
if ((this.currentEditBlock.data.indexOf(item) === -1)) {
this.currentEditBlock.data.unshift(item);
item.added = true;
} else {
this.removeFromCurrentMediaBlock(item, type);
}
$rootScope.$broadcast("CONTENT_CHANGE", "");
}
如果有人能在这里看到明显的指示,那将非常感激。
编辑:添加了setEditBlock函数链的结尾。