无法使用Angular.js隐藏表行的按钮

时间:2016-02-08 07:30:14

标签: javascript angularjs

我在使用Angular.js点击按钮后尝试隐藏按钮时遇到一个问题。我正在解释下面的代码。

<tbody id="detailsstockid">
    <tr ng-repeat="code in ListOfGeneratedCode">
        <td>{{$index+1}}</td>
        <td>{{code.name}}</td>
        <td>{{code.no_of_voucher}}</td>
        <td>{{code.expired_date}}</td>
        <td>{{code.voucher_amount}}</td>
        <td>
            <input type='button' class='btn btn-xs btn-green' value='View' ng-click="viewVoucherCodeData(code.voucher_code_id);">
        </td>
        <td><img ng-src="upload/{{code.image}}" name="pro" border="0" style="width:50px; height:50px; border:#808080 1px solid;" /></td>
        <td>
            <input type='button' class='btn btn-xs btn-green' value='Send' ng-click="sendVoucherCode(code.voucher_code_id);">
        </td>
        <td ng-hide="editButton">
            <a ui-sref="code">
                <input type='button' class='btn btn-xs btn-green' value='Edit' ng-click="editVoucherCodeData(code.voucher_code_id);">
            </a>
        </td>
        <td ng-hide="delButton">
            <a ui-sref="code">
                <input type='button' class='btn btn-xs btn-red' value='Remove' ng-click="deleteVoucherCodeData(code.voucher_code_id);">
            </a>
        </td>
    </tr>
</tbody>

我的控制器端代码如下所示。

$scope.sendVoucherCode=function(voucherCodeId){
        $scope.editButton=true;
        $scope.delButton=true;
}

我的问题是当用户点击Send时,所有行的edit and delete按钮都消失了。我需要用户点击相应行的send按钮的edit and delete按钮应该消失。请帮助我。

1 个答案:

答案 0 :(得分:2)

现有代码需要进行一些修改,因为编辑和删除的键是相同的,所以它清除整体。请参考以下代码:

<强> HTML

<tbody id="detailsstockid">
    <tr ng-repeat="code in ListOfGeneratedCode">
        <td>{{$index+1}}</td>
        <td>{{code.name}}</td>
        <td>{{code.no_of_voucher}}</td>
        <td>{{code.expired_date}}</td>
        <td>{{code.voucher_amount}}</td>
        <td><input type='button' class='btn btn-xs btn-green' value='View' ng-click="viewVoucherCodeData(code.voucher_code_id);"></td>
        <td><img ng-src="upload/{{code.image}}" name="pro" border="0" style="width:50px; height:50px; border:#808080 1px solid;" /></td>
        <td>
            <input type='button' class='btn btn-xs btn-green' value='Send' ng-click="sendVoucherCode(code.voucher_code_id);">
        </td>
        <td ng-hide="code.editButton">
            <a ui-sref="code">
                <input type='button' class='btn btn-xs btn-green' value='Edit' ng-click="editVoucherCodeData(code.voucher_code_id);">
            </a>
        </td>
        <td ng-hide="code.delButton">
            <a ui-sref="code">
                <input type='button' class='btn btn-xs btn-red' value='Remove' ng-click="deleteVoucherCodeData(code.voucher_code_id);">
            </a>
        </td>
    </tr>
</tbody>

<强> JS

$scope.ListOfGeneratedCode实例化后添加此内容。

angular.forEach($scope.ListOfGeneratedCode, function (value, key) {
    value.push('editButton', false);
    value.push('delButton', false);
});

使用以下命令追加/更改现有方法:

$scope.sendVoucherCode = function (id) {
    angular.forEach($scope.ListOfGeneratedCode, function (value, key) {
        if (value.voucher_code_id == id) {
            value.editButton = $scope.delButton = true;
        }
    });
}

$scope.editVoucherCodeData = function (id) {
    angular.forEach($scope.ListOfGeneratedCode, function (value, key) {
        if (value.voucher_code_id == id) {
            value.editButton = true;
        }
    });
}

$scope.deleteVoucherCodeData = function (id) {
    angular.forEach($scope.ListOfGeneratedCode, function (value, key) {
        if (value.voucher_code_id == id) {
            value.delButton = true;
        }
    });
}