У меня есть два контроллера, работающих на одном ng-повторе. Мой первый контроллер вводит данные, затем второй обновляет данные. Мне нужно объединить их, чтобы представление могло показать изменения.Объедините два угловых контроллера
Мой первый контроллер:
app.controller("ProductsController", function($scope, $timeout, ProductsService) {
ProductsService.productsListData().then(function(result) {
$scope.productsList = result;
console.log(result);
});
Мой второй контроллер:
app.controller('ReviewProductsController', function ($scope, $http) {
$scope.hide_product = function (product_code) {
$scope.message = "";
var request = $http({
method: "post",
url: "/data/hideProduct.php",
data: {
product_code: product_code
},
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
});
/* Check whether the HTTP Request is Successfull or not. */
request.success(function (data) {
$scope.message = "Product Hidden: "+data;
});
}
});
Мой HTML:
<button ng-click="hide_product(product.product_code.S)" type="button" class="btn btn-warning btn-block">Hide</button>
Как совместить эти два контроллера, так что мое мнение может автоматически обновлять при изменении данных?
UPDATE:
Моя служба:
app.factory('ProductsService', function($q) {
return {
productsListData: function() {
var dynamodb = new AWS.DynamoDB({
region: 'us-west-2',
accessKeyId: 'accessKey',
secretAccessKey: 'secretAccessKey',
});
var params = {
TableName: 'productList',
Limit: 100,
FilterExpression:
'attribute_not_exists(is_hidden)' + 'OR is_hidden = :bool_test',
ExpressionAttributeValues: {
':bool_test': {"BOOL":false},
}
};
var deferred = $q.defer();
// ACCESS dynamodb
dynamodb.scan(params, function(err, data) {
if (err) {
console.log(err, err.stack);
} else {
//console.log(data);
}
deferred.resolve(data);
});
return deferred.promise;
}
}
}); //.ProductsService
Объедините их в JS. То, что у меня есть, работает, но чувствует себя неряшливо. Также единственный способ изменить представление - манипулировать DOM, который на самом деле не выглядит угловатым. Поэтому я хотел бы объединить их в js, чтобы я мог изменить область $, чтобы отражать изменения данных. –
Почему у вас есть два контроллера для одного вида? –
Один для получения данных и один для его обновления. Я знаю плохую практику, поэтому я пытаюсь ее исправить. –