2016-04-06 22 views
1

Sitemde bir açılır kutuya seçeneklerin listesini yüklemek için Mustache ve Nodejs kullanıyorum. Sayfa her yenilendiğinde, açılan kutudaki verilerin kopyalanmasını sağlarım. Bu nasıl önlenebilir. Umarım benim sorum açık.Tarayıcı yenilemesinde verilerin çoğaltılması - Nodejs

Aşağıdaki html kod snippet'inde Bıyık'ı nasıl kullandığımı görebilirsiniz;

<div class="cd-filter-block"> 
       <h4>Branches</h4> 
       <div class="cd-filter-content"> 
        <div class="cd-select cd-filters"> 
         <select class="filter" name="selectThis" type="radio" id="branches"> 
          {{#branches}} 
           <option>{{name}}</option> 
          {{/branches}} 
         </select> 
        </div> 
       </div> 
      </div> 

Bu da Nodejs kodudur;

var express = require('express'); 
var app = express(); 
var fs = require('fs'); 
var glob = require('glob'); 
var mustache = require('Mustache'); 
var mustacheExpress = require('mustache-express'); 

// Register '.mustache' extension with The Mustache Express 
app.engine('mustache', mustacheExpress()); 
app.set('view engine', 'mustache'); 
app.set('views', __dirname + '/views'); 
app.use(express.static('public')); 

//mustache templates 
app.get('/', function(req, res){ 
    var view = { 
     'branches' : listBranches(), 
    'gdc' : listFiles('../branches/BR/Desktop/other/'), 
     'san' : listFiles('../branches/BR/other/'), 
     'gmc' : listFiles('../branches/BR/Mobile/other/'), 
     'filter' : listFiles1('../branches/BR/Mobile/other/') 
    } 
    res.render('index', view); 
}); 
3 
//listBranches 
var fs = require('fs'); 
var glob = require('glob'); 
var path = '../branches/other/' + '*'; 
var filelist = []; 

function listBranches() { 
    var files = glob.sync(path).filter(isFolder); 

    for (var i = files.length - 1; i >= 0; i--) { 
    filelist.push({ 
     name: files[i].split('/')[3], 
    }); 
    }; 

    return filelist; 
} 

function listFiles(path) { 

    var filelist2 = []; 
    var files = glob.sync(path + '**').filter(isFile); 

    for (var i = files.length -1; i >= 0; i--) { 
    filelist2.push({ 
     "filename" : getFilename(files[i]), 
       "path" : files[i] 
     }); 
    }; 

    return filelist2; 
} 

function getFilename(path) { 
    var parts = path.split('/'); 
    return parts[parts.length-1]; 
} 

function isFolder(path) { 
    return fs.lstatSync(path).isDirectory(); 
} 

function isFile(path) { 
    return fs.lstatSync(path).isFile(); 
} 

//filters 
function listFiles1(path) { 
    var filelist = []; 
    var files = glob 
     .sync(path + '**') 
     .filter(isFile); 

    for (var i = files.length - 1; i >= 0; i--) { 
     filelist.push(
      {"filename" : createURL('test1','brand','test3','test4',getFilename(files[i])), 
      "path" : files[i] 
      }); 
      console.log(createURL('test1','brand','test3','test4',getFilename(files[i]))); 
    }; 

    return filelist; 
} 

function isFile(path) { 
    return fs.lstatSync(path).isFile(); 
} 

function getFilename(path) { 
    var parts = path.split('/'); 
    return parts[parts.length-1]; 
} 

function splitFile(file,part) { 
    var parts2 = file.split('.'); 
    return parts2[part]; 

} 



function createURL(filter1, filter2, filter3, section, file) { 


    var branch = filter1; 
    var brand = filter2; 
    var channel = filter3; 


    return 'http://' + '--' + channel + '.' + brand + '.' + 'local:8085' + '/' + '/' + file 


} 

//run app 
app.listen(3000, function(){ 
    console.log('App running on port 3000!') 
}); 

cevap

2

listBranches() sunucu üzerinde çağrıldığında her seferinde, filelist diziye fazla öğe ekleyerek öğeler o değişkenin birikir böylece ve listBranches() getiri beri değişken, denir, her zaman, daha uzun dönecek ve daha uzun dizi.

Bu sizin kod yapmaya çalıştığı şey benim için tamamen net değil, ama en azından bu değiştirerek bu sorunu çözebilirsiniz:

function listBranches() { 
    var filelist = []; 
    var files = glob.sync(path).filter(isFolder); 

    for (var i = files.length - 1; i >= 0; i--) { 
    filelist.push({ 
     name: files[i].split('/')[3], 
    }); 
    }; 

    return filelist; 
} 

bu modülü Unutmayın: Bu kadar

var filelist = []; 

function listBranches() { 
    var files = glob.sync(path).filter(isFolder); 

    for (var i = files.length - 1; i >= 0; i--) { 
    filelist.push({ 
     name: files[i].split('/')[3], 
    }); 
    }; 

    return filelist; 
} 

Sunucunuzdaki düzey veya genel değişkenler, bir istekten diğerine devam eder ve tüm istekler tarafından paylaşılır. Yani, amaçlanan davranış olmadığı sürece modül seviyesi değişkenlerini kullanmayın.

+0

Çok teşekkürler, cevabınızı gerçekten takdir ediyorum. Çalıştı ve şimdi gelecekteki referans için nasıl yapılacağını anlıyorum. Çok takdir :) – Andrew