Таблицы данных не перезагружаются в angularjs

У меня есть требование, по которому я должен добавить определенные продукты в таблицы данных и повторно привязать таблицу данных, чтобы ее количество обновлялось. Я использую MVC и angularjs 1.6.2

Я создаю данные следующим образом:

<table id = "dtProducts" ng-if = "AllProducts"
       class = "table manage-user-table offer-mgt-table market-selection-tab"
       datatable = "ng" dt-options = "dataTableOpt">
    <thead>
        <tr>
            <th><input type='checkbox' class = "selectAllMarket" 
                       value='SelectAll' ng-model = "selectAll" >
            </th>
            <th>Product Name</th>
            <th>Product Type</th>
        </tr>
    </thead>
    <tbody>
        <tr dt-rows ng-repeat = "product in AllProducts">
            <td><input type = "checkbox" class = "selectMarket"
                       ng-model = "product.selected"
                       data-offerid = "{{product.ID}}"
                       ng-click = "toggleSelect(product.selected, $index)">
            </td>
            <td>{{product.Name}}</td>
            <td>{{product.VerticalType.VerticalTypeDisplayName}}</td>

        </tr>
    </tbody>
</table>

В представлении есть раздел, содержащий текстовое поле для ввода названия продукта и раскрывающийся список для выбора типа продукта. Он также содержит кнопку Add при нажатии кнопки, по которой на сервере создается сообщение, чтобы сохранить этот продукт и в случае успеха этого сообщение на интерфейсе я вызываю функцию, чтобы перезагрузить AllProducts. Как только эта функция вызывается, я получаю сообщение об ошибке

TypeError: o.ngDestroy is not a function in angularjs dataTables.

Перезагрузка таблицы данных выполняется с помощью следующего кода после сохранения продуктов в таблице.

var getAllProducts = function () {
    var urlgetAllProducts = apiURL + "/AllProducts?providerId = " + providerID;
    $http({
        url: urlgetAllProducts,
        method: 'GET', //$scope.customization,
    }).then(function successcallback(response) {

        $scope.AllProducts = response.data.ResponseData;


        $scope.$parent.AllProducts = $scope.AllProducts;
        if ($scope.offer.ProductList != undefined) {

            MakeSelected();
            $scope.selectProducts();

        }

    },
    function errorcallback(response) {
    }).then(function () {
    });
}

Может ли кто-нибудь мне помочь в этом плане? Я использую angulardatables 0.6.2. При необходимости я могу предоставить более подробную информацию. Спасибо

Укажите код, в который вы перезагружаете данные. Также расскажите, как создается dataTableOpt.

Ajanth 31.05.2018 21:50

Было бы разумнее использовать ng-change вместо ng-click. Что такое атрибут data-offerid? Это специальная директива? Или jQuery использует его для управления флажком? (Не хорошая идея.)

georgeawg 31.05.2018 23:26

ng-if создает дочернюю область. Это могло вызвать проблему сокрытия данных с флажком selectAll.

georgeawg 31.05.2018 23:32

@georgeawg Я обработал это с помощью кода

Sana 01.06.2018 07:48

@naturmaN Пожалуйста, посмотрите мою правку.

Sana 01.06.2018 07:48

Я заметил одну вещь, независимо от того, что я нажимаю на какой-либо объект в $ scope. AllProducts, я получаю эту ошибку

Sana 01.06.2018 08:57
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
5
6
625
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел решение. Я лениво связывал библиотеку, из-за чего возникали проблемы. Поместив часть загрузки в setTimeout, он работал как шарм

Другие вопросы по теме