UNPKG

@openui5/sap.ui.core

Version:

OpenUI5 Core Library sap.ui.core

141 lines (125 loc) 4.71 kB
/*! * OpenUI5 * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company. * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. */ // Provides control sap.ui.core.mvc.TemplateView. sap.ui.define([ 'sap/ui/core/library', './View', "./TemplateViewRenderer", "sap/base/Log" ], function(library, View, TemplateViewRenderer, Log) { "use strict"; // shortcut for enum(s) var ViewType = library.mvc.ViewType; /** * Constructor for a new mvc/TemplateView. * * <strong>Note:</strong> Application code shouldn't call the constructor directly, but rather use the * factory {@link sap.ui.templateview} or {@link sap.ui.core.mvc.View.create View.create} with type * {@link sap.ui.core.mvc.ViewType.Template Template}. * * @param {string} [sId] id for the new control, generated automatically if no id is given * @param {object} [mSettings] initial settings for the new control * * @class * A view defined in a template. * @extends sap.ui.core.mvc.View * * @author SAP SE * @version 1.87.1 * * @public * @deprecated Since version 1.56.0, use {@link sap.ui.core.mvc.XMLView} in combination with * {@link topic:5ee619fc1370463ea674ee04b65ed83b XML Templating} instead. * @alias sap.ui.core.mvc.TemplateView * @ui5-metamodel This control/element also will be described in the UI5 (legacy) designtime metamodel */ var TemplateView = View.extend("sap.ui.core.mvc.TemplateView", /** @lends sap.ui.core.mvc.TemplateView.prototype */ { metadata : { library : "sap.ui.core" }, renderer: TemplateViewRenderer }); (function(){ /** * Defines or creates an instance of a template view. * * The behavior of this method depends on the signature of the call and on the current context. * * <ul> * <li>View Definition <code>sap.ui.templateview(sId, vView)</code>: Defines a view of the given name with the given * implementation. sId must be the views name, vView must be an object and can contain * implementations for any of the hooks provided by templateview</li> * <li>View Instantiation <code>sap.ui.templateview(sId?, vView)</code>: Creates an instance of the view with the given name (and id)</li>. * </ul> * * Any other call signature will lead to a runtime error. If the id is omitted in the second variant, an id will * be created automatically. * * @param {string} [sId] id of the newly created view, only allowed for instance creation * @param {string | object} vView name or implementation of the view. * @public * @static * @return {sap.ui.core.mvc.TemplateView | undefined} the created TemplateView instance in the creation case, otherwise undefined * @deprecated since 1.56 use {@link sap.ui.core.mvc.XMLView} in combination with {@link topic:5ee619fc1370463ea674ee04b65ed83b XML Templating} instead * @ui5-global-only */ sap.ui.templateview = function(sId, vView) { Log.warning("sap.ui.core.mvc.TemplateView is deprecated. Use XMLView or JSView instead."); return sap.ui.view(sId, vView, ViewType.Template); }; /** * The type of the view used for the <code>sap.ui.view</code> factory * function. This property is used by the parsers to define the specific * view type. * @private */ TemplateView._sType = ViewType.Template; /** * Abstract method implementation. Returns the name of the controller. * @return {string} the name of the set controller. Returns undefined when no controller is set. * @private */ TemplateView.prototype.getControllerName = function() { return this._sControllerName; }; /** * Returns the view URL for a given template name in respect of the module path. * * @param {string} sTemplateName The name of the template * @return {string} the view url * @private * @static */ TemplateView._getViewUrl = function(sTemplateName) { return sap.ui.require.toUrl(sTemplateName.replace(/\./g, "/")) + ".view.tmpl"; }; /** * Abstract method implementation. * * @see sap.ui.core.mvc.View#initViewSettings * * @private */ TemplateView.prototype.initViewSettings = function (mSettings) { if (!mSettings) { throw new Error("mSettings must be given"); } // View template handling - no Tmpl template given if (!mSettings.viewName) { throw new Error("No view name is given."); } this._oTemplate = sap.ui.template({ id: this.getId(), src: TemplateView._getViewUrl(mSettings.viewName) }); this._sControllerName = this._oTemplate._sControllerName; this._oTemplate = this._oTemplate.createControl(undefined, undefined, this); this.addContent(this._oTemplate); }; }()); return TemplateView; });