title: Composition instead of inheritance in Controllers
body: <p>I'd like to implement a structure like below to avoid a "BaseController" superclass:</p>
  
  <p><strong>controller/helpers/Navigation.js</strong></p>
  
  <pre><code>sap.ui.define([
      "sap/ui/base/Object"
  ], function(Object) {
      "use strict";
  
      return Object.extend("sap.cre.core.ui.controller.helpers.Navigation", {
          controller: null,
  
          onInit: function(controller) {
              this._controller = controller;
          },
  
          onNavBack: function() {
              this._controller.getRouter().navTo("home");
          }
      });
  });
  </code></pre>
  
  <p><strong>controller/Something.controller.js</strong></p>
  
  <pre><code>sap.ui.define([
      "sap/ui/core/mvc/Controller",
      "sap/cre/core/ui/controller/helpers/Navigation"
  ], function(Controller, Navigation) {
      "use strict";
  
      return Controller.extend("sap.cre.core.ui.controller.Something", {
          onInit: function() {
              this.navigation = new Navigation(this);
          }
      });
  });
  </code></pre>
  
  <p>Then the XML view is pointing the onPress event like below:</p>
  
  <pre><code>&lt;semantic:FullscreenPage
          navButtonPress="navigation.onNavBack"
          showNavButton="true"&gt; ...
  </code></pre>
  
  <p>But the view isn't finding the event when pointed to <code>navigation.</code>.</p>
  
  <p>So, my questions are:</p>
  
  <ul>
  <li>has someone seen such approach over OpenUI5/SAPUI5 already?</li>
  <li>Is there any bad consequence?</li>
  <li>What is wrong in my approach that the view cannot call <code>navigation.onNavBack</code>?</li>
  </ul>
  
  <p>Thanks!</p>
  
  <p><strong>Update:</strong></p>
  
  <p>I tried this way too:</p>
  
  <p><strong>controller/Something.controller.js</strong></p>
  
  <pre><code>sap.ui.define([
      "sap/ui/core/mvc/Controller",
      "sap/cre/core/ui/controller/helpers/Navigation"
  ], function(Controller, Navigation) {
      "use strict";
  
      return Controller.extend("sap.cre.core.ui.controller.Something", {
          navigation: new Navigation()
      });
  });
  </code></pre>
  
  <p>That way works as @hirse suggested (putting a <code>.</code> in front of the path in the view), but that let me lose any link to the controller, which turns the helper class too limited and mostly useless.</p>
  
  <p>But it makes me guess that just by setting <code>this.navigation = new Navigation(this)</code> it's missing anything about binding on the way.</p>