2015-10-06 113 views
2

我正在嘗試使用lodash _.template創建一個帶有Node.js的HTML電子郵件模板。當我使用下面的代碼時,出現此錯誤:((__t = (firstName)) == null ? '' : __t) +對電子郵件使用lodash ._模板

有關我在做什麼錯的任何想法?另外,應該只有一個爲所有動態字段編譯的模板?

var firstName = _(contactinfo).pluck('firstName'); 
var compiledFirst = _.template('template with <%= firstName %>!'); 
var htmlFirst = compiledFirst(firstName); 

var lastName = _(contactinfo).pluck('lastName'); 
var compiledLast = _.template('template with <%= lastName %>!'); 
var htmlLast = compiledLast(lastName); 

var data = { 
    from: [email protected], 
    to: email, 
    subject: 'Your Order Confirmation', 
    html: '<p>Dear '+ htmlFirst + htmlLast+': '</p><br> 
<p>Thank you for your order. . . </p><table><tr> 
<thead><th><strong>Items</strong></th></thead></tr></table>' 
} 

這裏是陣列的樣子:

[ 
    { 
     "address": "555 Broadway", 
     "city": "New York", 
     "email": "[email protected]", 
     "firstName": "John", 
     "lastName": "Doe", 
     "phone": "2125551212", 
     "state": { 
     "code": "NY", 
     "state": "New York" 
     }, 
     "value1": true, 
     "zip": "10001", 
    "$id": "-K-qmfZzHgQaEM7uHKEK", 
    } 
    ] 
+0

你正在爲'lastName'做'pluck('firstName')' –

+0

@Explosion Pills感謝你的指出。修正它上面。 – Ken

回答

1

注意pluck返回與firstName(或選擇屬性)的數組,數組中的所有對象。不僅如此,但你必須命名模板對象:

var firstName = _(contactinfo).pluck('firstName'); 
var compiledFirst = _.template('template with <%= firstName %>!'); 
var htmlFirst = compiledFirst({firstName: firstName[0]}); 

它可能會更容易只是有一個模板,並通過contactInfo對象是:

var htmlAll = _.template('<%= firstName %> <%= lastName %>')(contactInfo[0]) 

請介意這隻會獲得第0個contactInfo條目。如果你想要不止一個,你可能需要迭代 - 你也可以在lodash模板中做到這一點。

+0

如果我打算使用'var htmlAll',我會像第一行那樣定義firstName和lastName嗎? – Ken

+0

@Ken第二個例子你不需要 –

+0

OK。我試過並定義了'var contactinfo = req.body [0];'但是我得到了一個'無法讀取屬性'0'的未定義錯誤 – Ken