У меня есть требование, по которому я должен добавить определенные продукты в таблицы данных и повторно привязать таблицу данных, чтобы ее количество обновлялось. Я использую 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. При необходимости я могу предоставить более подробную информацию. Спасибо
Было бы разумнее использовать ng-change вместо ng-click. Что такое атрибут data-offerid? Это специальная директива? Или jQuery использует его для управления флажком? (Не хорошая идея.)
ng-if создает дочернюю область. Это могло вызвать проблему сокрытия данных с флажком selectAll.
@georgeawg Я обработал это с помощью кода
@naturmaN Пожалуйста, посмотрите мою правку.
Я заметил одну вещь, независимо от того, что я нажимаю на какой-либо объект в $ scope. AllProducts, я получаю эту ошибку


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