cancel
Showing results for 
Search instead for 
Did you mean: 

How to set templateShareable while/before cloning

venkatesha_n
Explorer

Hi Experts,

In the controller.js, i have written a clone statement like this:

var oView = that.getView().byId("aggregatedView").clone(); // i need a cloning here to avoid loosing the existing binding

oView.bindItems({
path: "/ZEntity",
template: that.getView().byId("aggregatedViewItems"),
filters: aFilters });

I am receiving an error as described here:

During a clone operation, a template was found that neither was marked with 'templateShareable:true' nor 'templateShareable:false'. https://sapui5.hana.ondemand.com/sdk/#docs/guide/3a4a9e562988456c9be0ef883ae7da50.html


I know i have to set templateShareable to either false or true somewhere(i dont know where exactly).

I tried setting in the XML view like this: it did not work

<items>

<core:Item id="aggregatedViewItems" key="{Key1}" text="{Text1}" templateShareable="false"/>

</items>

Can somebody help me with syntax how i can set templateShareable within/before this statement: var oView = that.getView().byId("aggregatedView").clone();

BR,
Venky.

Accepted Solutions (1)

Accepted Solutions (1)

venkatesha_n
Explorer
0 Kudos

Hi Guys,

Thanks for your help.

I could fix it by setting templatesharable in the XML view itself.

Earlier the code was like this:

<ActionSelect id="aggregatedView" items="{ path: '/Zentity' }" maxWidth="20em" change="handleSwitchProcess" > <items>
<core:Item id="aggregatedViewItems" key="{Key1}" text="{text1}" />
</items>
</ActionSelect>

After fixing, it became:

<ActionSelect id="aggregatedView" items="{ path: '/Zentity', templateShareable:false }" maxWidth="20em" change="handleSwitchProcess" > <items>
<core:Item id="aggregatedViewItems" key="{Key1}" text="{text1}" />
</items>
</ActionSelect>

BR,
Venky.

Answers (5)

Answers (5)

venkatesha_n
Explorer

Hi Guys,

Thanks for your help.

I could fix it by setting templatesharable in the XML view itself.

Earlier the code was like this:

<ActionSelect id="aggregatedView" items="{ path: '/Zentity' }" maxWidth="20em" change="handleSwitchProcess" > <items>
<core:Item id="aggregatedViewItems" key="{Key1}" text="{text1}" />
</items>
</ActionSelect>

After fixing, it became:

<ActionSelect id="aggregatedView" items="{ path: '/Zentity', templateShareable:false }" maxWidth="20em" change="handleSwitchProcess" > <items>
<core:Item id="aggregatedViewItems" key="{Key1}" text="{text1}" />
</items>
</ActionSelect>

BR,
Venky.

former_member228602
Contributor

Hello Venky,

As attached here , this is jsdoc for aggregation binding

o your code would be

oView.bindItems({ path: "/ZEntity", template: that.getView().byId("aggregatedViewItems"), filters: aFilters ,templateShareable : true/false});

Hope this helps.

Thanks and Regards,

Veera

venkatesha_n
Explorer
0 Kudos

Hi Veera,

Thanks for the help.

I tried your suggestion, but the error is occuring at this statement itself:

var oView = that.getView().byId("aggregatedView").clone()

So, i need to set this 'templateShareable ' before i perform the clone() operation in the above statement, is it possible ?

Best Regards,
Venky.

former_member228602
Contributor

Hello Venky,

This is the jsdoc for binding aggregation .

As you would templateShareable is also a parameter in the binding. So your binding would be essentially be

oView.bindItems({ path: "/ZEntity", template: that.getView().byId("aggregatedViewItems"), filters: aFilters ,templateShareeable : true/false });               

I hope this helps.

Thanks and Regards,

Veera

junwu
Active Contributor
0 Kudos

why you want to clone?

venkatesha_n
Explorer
0 Kudos

Hi Jun,

I wanted to clone due to the usage of template for binding and both problem and solution is explained here: https://archive.sap.com/discussions/thread/3542984

Any idea how i can set templatesharable before clone ?

BR,
Venky.

junwu
Active Contributor
0 Kudos

why you want to clone?