(* Как my previous question было более или менее отвечал, а код эволюционировал, я открываю новый вопрос. *)Последовательные письма к нескольким файлам на сервере
Я хочу построить простую игровую площадку с стеком MEAN который имитирует плункер: у нас есть список файлов и текстовая область слева, а также предварительный просмотр в правой руке. Обратите внимание, что файлы сохраняются во временной папке, а предварительный просмотр в реальном времени - это iframe
, введенный файлами из этой временной папки.
**********, что я написал **********
В HTML файл, добавить один контроллер для одного файла, так что я могу точно отслеживать, какой файл изменяется в текстовом поле. Тогда, мне просто нужно сохранить этот файл на сервер, а не все файлы:
<div ng-repeat="file in files track by $index" ng-controller="fileCtrl">
<a ng-click="go(file)">{{file.name}}</a>
</div>
контроллер:
app.controller('fileCtrl', ['$scope', 'codeService', function ($scope, codeService) {
$scope.$watch('file', function() {
codeService.render($scope.files, $scope.file);
}, true);
}]);
codeService
:
app.service('codeService', ['$http', function ($http) {
this.render = function (files, changedFile) {
$http.post('/writeFile', changedFile);
};
}]);
маршрутизатор:
router.post('/writeFile', function (req, res, next) {
var file = req.body;
var fs = require('fs');
fs.writeFile("public/tmp/" + file.name, file.body, function (err) {
if (err) { return console.log(err) };
});
});
********** my te sts **********
Мои тесты показывают, что модификация в текстовом поле хорошо поймана, а измененный файл может быть более или менее сохранен на сервере: он работает достаточно хорошо для 1-го , 2-й работы, но часто возникают проблемы для писем, которые следуют.
********** мои вопросы **********
Может кто-нибудь помочь мне реструктурировать код хорошо обращаться:
- асинхронный призывы сочинений, так что все сочинения хорошо (и быстро) выполняются.
- записи с
debounce
, это означает, что мы можем подождать немного перед каждой экономией. Но это немного сложно, когда у нас есть несколько файлов: предположим, что мы могли бы переключаться между файлами очень быстро, как быdebounce
и асинхронное сохранение в этом случае?
Так вы установите один наблюдатель для всех файлов и сохранять все 3 вещей, каждый раз.Если я сохраняю каждый раз все файлы, хотя есть только один, который был изменен, это будет довольно дорогостоящим, не так ли? Как я мог избежать этого? Есть ли быстрый способ определить, какие элементы были изменены? – SoftTimur
http://plnkr.co/edit/Ggee8sDzZmiFyH9V7dmG?p=preview Да, просто добавьте ng-change внутри ng-repeat. check plunker for demo – Cassidy
Решила ли ваша проблема? – Cassidy