2013-11-09 62 views
5

我必須做錯事,但我看不到......基本上,如果我通過sails generate controller products創建控制器/模型並在文件/controllers/ProductsController中添加一些變量索引動作如:在Sails中不能工作的自定義視圖/動作/控制器JS

index: function(req, res) { 

    return res.view({ 
     myOne: 'World?', 
     myvar: 'hello???', 
     title: 'Yeap' 
    }) 

}, 

當我檢查本地主機:1337/products肯定足夠的變量打印在模板內。請注意,我沒有添加自定義視圖,我的模板文件位於views/products/index.jade(我使用Jade而不是EJS)。但是,如果我在/config/routes創建自定義視圖,例如:

'/custom': { 

    view: 'custom', 
    controller: 'ProductsController', 
    action: 'customAction' 

} 

,在我的ProductsController我有如前所述一個非常類似的行動:

customAction: function(req, res) { 

    return res.view({ 
     myOne: 'Hello?', 
     myvar: 'World???', 
     title: 'Yeap' 
    }) 

}, 

的變量不是在我的模板打印。該模板被稱爲好,所以是控制器和行動(似乎)。任何人都可以解釋我做錯了什麼?

+0

你在哪裏放置你的視圖 - custom.jade? – JohnGalt

+0

我已添加到視圖文件夾中。不在任何目錄下。但是,如果錯誤是沒有找到視圖,錯誤會有所不同。視圖呈現良好,但沒有數據正在傳遞。 – WagnerMatosUK

回答

8

,如果你想通過訪問它,你必須命名視圖相同的名稱,你的行動customAction.jade之間做出選擇:

index: function(req, res) { 

    return res.view({ 
    myOne: 'World?', 
    myvar: 'hello???', 
    title: 'Yeap' 
    }) 

}, 

,或者您可以通過訪問同一個視圖/模板(如index.jade)使用此語法:

customAction: function(req, res) { 

    return res.view('products/index', { 
    myOne: 'World?', 
    myvar: 'hello???', 
    title: 'Yeap' 
    }) 

}, 

我有一個工作回購使用ejs here

+0

如何讓他們到我的客戶端JavaScript。目前我正在將它們放在一個隱藏的div標籤上,並使用jquery進行拖動。有沒有更聰明的方法? –

+0

@VampireCoder它取決於你想如何使用它。你可能只是在你的模板引擎中得到它(如果你的對象是一個帖子列表,你可以在模板中循環)。然而,如果你想打算在你的客戶端js中使用它,不幸的是,你不能堅持使用jQuery來獲取它,或者做一個ajax調用(但是這有點改變)。 – WagnerMatosUK

相關問題