财产变更不会触发观看

时间:2017-03-10 07:11:36

标签: javascript angularjs

所以我对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函数链的结尾。

0 个答案:

没有答案