<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <link href="https://ajax.googleapis.com/ajax/libs/dojo/1.11.2/dijit/themes/claro/claro.css" rel="stylesheet" type="text/css" />
  <style>
    html,
    body {
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
      overflow: hidden;
    }
    
    .my-widget,
    #borderContainer1,
    #borderContainer2,
    #borderContainer3 {
      width: 100%;
      height: 100%;
    }
  </style>
</head>

<body class="claro">
  <!-- configure Dojo -->
  <script data-dojo-config="async: 1, dojoBlankHtmlUrl: '/blank.html',            packages: [ {                name: 'myapp',                location: location.pathname.replace(/\/[^/]+$/, '') + 'myapp'            } ]" src="//ajax.googleapis.com/ajax/libs/dojo/1.11.2/dojo/dojo.js"></script>
  <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:true, liveSplitters:true" id="borderContainer1">
    <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:true, region:'leading'" style="width: 100px;">Hi, I'm leading pane</div>
    <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:true, region:'center'">
      <!-- embedded BorderContainer not working when declared inside a widget's template -->
      <!-- <div data-dojo-type="myapp/MyWidget" id="borderContainer3"></div> -->
      <div id="borderContainer3"></div>
      <!-- embedded BorderContainer works ok when declared here             <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'sidebar', gutters:true, liveSplitters:true" id="borderContainer2">                <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:true, region:'leading'" style="width: 100px;">Hi, I'm leading pane of center</div>                <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:true, region:'center'">Hi, I'm center of center</div>            </div--></div>
  </div>
  <script>
    require(["dojo/_base/array", 'dojo/_base/declare', "dojo/parser", "dojo/on", "myapp/MyWidget", "dijit/layout/ContentPane", "dijit/layout/BorderContainer", 'dojo/domReady!'], function(array, declare, parser, on, MyWidget) {
          console.log("b4 parse ....") 
          parser.parse().then(function() {
                console.log("after parse ...."); //create your widget here  
                new MyWidget({}).placeAt("borderContainer3");  
          }); 
    });
  </script>
</body>

</html>
<div class="my-widget"> <!-- root element cannot have a data-dojo-type defineed -->             <div data-dojo-attach-point="containerNode"  data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'sidebar', gutters:true, liveSplitters:true" id="borderContainer2">            <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:true, region:'leading'" style="width: 100px;">Hi, I'm leading pane of center</div>            <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="splitter:true, region:'center'">Hi, I'm center of center</div>        </div></div>
define(['dojo/_base/declare', "dijit/_WidgetBase", "dijit/_TemplatedMixin", "dijit/_WidgetsInTemplateMixin", "dojo/text!./MyWidget.html", "dijit/layout/ContentPane", "dijit/layout/BorderContainer", ], function(declare, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, template) {
      var widget = declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {
            templateString: template,
            startup() {
              this.inherited(arguments);
              /*console.log("startup", this);
              // HACK :
              setTimeout(function(){                        
                this.containerNode.resize()                    
                
              }.bind(this),100) */    
            }        
        
      });        
      return widget;   
});