bob.mazzo
bob.mazzo

Reputation: 5637

Angular Kendo tabStrip - dynamic content and auto-select first tab

Using the Kendo UI tabStrip widget, I'd like to do two things:

1) auto-select the first tab, as it does not show the tab content right away.

2) Swap out the contentUrl of the first tab, under a specific condition of course.

Funny thing is, when I use the k-content-urls directive on my Html, the first tabs loads up the content right away.

ex/

<div kendo-tab-strip  k-content-urls="['myTemplate.html', 'myTemplate2.html']">

However, I don't want to do it this way. I prefer the approach below, as in k-options="settings.tabOptions"

Here are the tabOptions in my controller code, and the HTML markup below it:

 settings.tabOptions = {
            animation: { open: { effects: "fadeIn" } },
            select: function (e) {
                console.log("Selected: " + e.item.innerText);
                // NOT WORKING..
                e.sender.dataSource.options.data[0].contentUrl = "../myNewTemplate.html"
            },
            change: function (e) {
                console.log("Changed: ");
            },
            activate: function (e) {
                console.log("Activated: " + e.item.innerText);
            },
            show: function (e) {
                console.log("Shown: " + e.item.innerText);
            },
            contentLoad: function (e) {
                console.log("Content loaded in " + e.item.innerText);                
            },
            dataTextField: "title",
            dataContentUrlField: "contentUrl",
            dataSource: [{
                title: "Formatting",
                contentUrl: '../app/shared/include/grid-config/gad-config-grid-prop.html'
            },
            {
                title: "Dimensions",
                contentUrl: '../app/shared/include/grid-config/gad-config-grid-dimen.html'
            },
            {
                title: "Risk Measures",
                contentUrl: '../app/shared/include/grid-config/gad-config-grid-riskmeasures.html'
            }],
            error: function (e) {
                console.log("Loading failed with " + e.xhr.statusText + " " + e.xhr.status);
            }
        };
 <div id="Gadgettabs" kendo-tab-strip="tabstrip" k-options="settings.tabOptions">        
        <ul> 
            <li class="k-state-active">Formatting</li>
            <li>Dimensions</li>
            <li>Risk Measures</li>
        </ul>               
    </div>

Again, I need to immediately show the first tab's content; and also figure out how to dynamically change out the content of the first tab.

Thanks in advance...

Bob

**** UPDATE **** I'm trying to dynamically change the contentUrl in the select: event above but it's not working.

Upvotes: 0

Views: 4179

Answers (1)

bob.mazzo
bob.mazzo

Reputation: 5637

Final resolution:

note: if you not using "controller as" syntax in your ng-controller directive (as I am), then just replace my "settings." object with "$scope." in the controller code. And of course in the html, just remove "settings." .

// KENDO TABSTRIP
settings.urls = ['../app/shared/include/grid-config/gad-config-grid-prop.html', '../app/shared/include/grid-config/gad-config-grid-dimen.html', '../app/shared/include/grid-config/gad-config-grid-riskmeasures.html'];
if ($scope.widget.gadgetType == "chart") {
	settings.urls[0] = '../app/shared/include/barchart-config/gad-config-barchart-prop.html';
};        
settings.tabOptions = {
	//animation: { open: { effects: "fadeIn" } },           
	select: function (e) {
		console.log("Selected: " + e.item.innerText);
	},
	change: function (e) {
		console.log("Changed: ");
	},
	activate: function (e) {
		console.log("Activated: " + e.item.innerText);
	},
	show: function (e) {
		console.log("Shown: " + e.item.innerText);
	},
	contentLoad: function (e) {
		console.log("Content loaded in " + e.item.innerText);                
	},            
	error: function (e) {
		console.log("Loading failed with " + e.xhr.statusText + " " + e.xhr.status);
	}
};
<div id="Gadgettabs" kendo-tab-strip="settings.tabStrip"
         k-rebind="settings.urls"
         k-content-urls="settings.urls"
         k-options="settings.tabOptions" >
        <ul> 
            <li class="k-state-active">TAB1</li>
            <li>TAB2</li>
            <li>TAB3</li>
        </ul>               
    </div>

Upvotes: 1

Related Questions