baryshev / ect

Fastest JavaScript template engine with embedded CoffeeScript syntax

Home Page:http://ectjs.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unable to use variables passed to extended template in base template

ameyp opened this issue · comments

commented

Suppose that template 'layout.ect' extends template 'default.ect'. Any variables passed to a call to render with layout.ect appear as undefined for any usage in template default.ect

The example in the readme under "You may use JavaScript object as root." also fails with the following:

c:\Users\Amey\Developer\sample\node_modules\ect\lib\ect.js:384
            throw e;
                  ^
ReferenceError: title is not defined in layout on line 1
  at Object.__ectTemplate (<anonymous>:6:79)
  at Object.__ectTemplate (<anonymous>:23:34)
  at [object Object].TemplateContext.render (c:\Users\Amey\Developer\sample\node_modules\ect\lib\ect.js:372:31)
  at [object Object].render (c:\Users\Amey\Developer\sample\node_modules\ect\lib\ect.js:421:20)
  at Object.<anonymous> (c:\Users\Amey\Developer\sample\test.js:9:21)
  at Module._compile (module.js:456:26)
  at Object.Module._extensions..js (module.js:474:10)
  at Module.load (module.js:356:32)
  at Function.Module._load (module.js:312:12)
  at Function.Module.runMain (module.js:497:10)
  at startup (node.js:119:16)
  at node.js:906:3

Thank you for report. There is a typo in example. Now fixed. All variables passed to templates need to be prefixed with @.

About your first question. Can you show code that represents error?

commented

I'm getting the same error with the changes you made in the README

Edit - Sorry, the README sample is working. I'll abstract my code into a case that's causing the error.

commented

Ok, I made the simplest example and it worked. There was a bug in my template, I was using a for loop variable with @ instead of using it directly. Sorry for the erroneous bug.