2015-07-21 44 views
0

我已經完成了一些Angular項目,但對於節點有點新鮮。我有一個自定義指令,顯示有關數據的彙總統計信息,<summary-stats></summary-stats>。當我使用Gulp和Browser Sync開發前端時,該指令工作正常,但是當我構建所有文件並運行node server.js時,我的自定義指令導致瀏覽器滯後。我相信這是因爲在指令中包含templateUrl帶模板的自定義Angular指令不會在節點中運行

有什麼我需要做的,以包括由templateUrl指定的模板,以便節點將提供HTML文件?

這裏是我的指令:

app.directive('summaryStats', function(scatterService) { 
    return { 
     restrict: 'A', 
     templateUrl: 'app/components/summaryStats/summaryStats.html', 
     link: function(scope, el, attr) { 

      function update(data) { 
       scope.lowCost = data.xMin; 
       scope.highCost = data.xMax; 
       scope.avgCost = data.avgCost; 
       scope.lowTime = data.yMin; 
       scope.highTime = data.yMax; 
       scope.avgTime = data.avgTime; 
       scope.topTechs = data.topTechs; 
      } 

      scope.$watch(function() { return scatterService.getModel(); }, function(newVal) { 
       update(newVal); 
      }, true); 
     } 
    }; 
}); 

這裏是我的server.js文件:

var express = require('express'); 
var path = require('path'); 
var morgan = require('morgan'); 
var bodyParser = require('body-parser'); 
var methodOverride = require('method-override'); 
var fs = require('fs'); 

var app = express(); 
app.use(function(req, res, next) { 
    req.headers['if-none-match'] = 'no-match-for-this'; 
    next();  
}); 

app.use(express.static(path.join(__dirname, '/dist'))); 
app.use(morgan('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({'extended':'true'})); 
app.use(methodOverride()); 

app.get('*', function(req, res) { 
    res.sendfile('./dist/index.html'); 
}); 

app.listen(8080); 
console.log("App listening on port 8080"); 

回答

0

我的問題是,我咕嘟咕嘟建設任務未插入模板到分發文件夾。解決這個問題的方法是放置一個放置我的HTML文件的static文件夾,並使用Gulp將其構建到我的分發文件夾中。