2017-10-04 4 views
0

Ich erstelle eine VSTS-Erweiterung und möchte die von Microsoft angebotenen Platform UI-Steuerelemente nutzen. Ich möchte nämlich die Splittersteuerung ausnutzen. Ich habe versucht, die documentation so gut wie ich konnte zu folgen, aber es ist nicht so gut ausgeschrieben. Ich schaute mir auch die von Micrsoft auf Github angebotenen Samples an.Wie kann ich meinen VSTS Extension Splitter merken, wenn ein Benutzer das Panel ausgeblendet hat oder nicht?

Endlich konnte ich den UI-Splitter mit einem Toggle-Button richtig arbeiten lassen, aber ich wollte auch, dass das Control Stateful ist. Ein gutes Beispiel hierfür ist der Backlogs-Hub und der Backlog-Explorer. Wenn ich diese Seite verlasse und zurückkomme, ist die Seite immer noch kollabiert. Ich habe die Quelle untersucht, um zu sehen, wie der generierte Quellcode aussieht, aber mein Steuerelement behält seinen Status immer noch nicht bei. Hier ist mein Code so weit, ich bin nicht sicher, was ich bin fehlt:

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="dist/vss-web-extension-sdk/lib/VSS.SDK.min.js"></script> 
    </head> 
    <body> 
     <script type="text/javascript"> 
      VSS.init({ 
       explicitNotifyLoaded: true, 
       usePlatformScripts: true, 
       usePlatformStyles: true 
      }); 

      VSS.ready(function() { 
       require(["VSS/Controls", "VSS/Controls/Splitter"]); 

       VSS.notifyLoadSucceeded(); 
      }); 
     </script> 

     <div class="hub-view explorer"> 
      <div class="splitter horizontal stateful toggle-button-enabled"> 
       <script class="options" defer="defer" type="application/json"> 
        { 
         "collapsedLabel": "Custom Explorer", 
         "settingPath": "Web/UIState/Custom/Splitter", 
         "initialSize": 217 
        } 
       </script> 

       <div class="leftPane"> 
        <div class="left-hub-content"> 
         Left Pane Content 
        </div> 
       </div> 
       <div class="handleBar"> 
        <div class="handlebar-label" title="Custom Explorer"> 
         <span class="handlebar-label-text">Custom Explorer</span> 
        </div> 
       </div> 
       <div class="rightPane"> 
        <div class="hub-title">Content Placeholder</div> 
        <div class="right-hub-content"> 
          Right Pane Content 
        </div> 
       </div> 
      </div> 
     </div> 
    </body> 
</html> 

Antwort

0

Sie können speichern die Daten mit Benutzer Umfang durch Data storage:

// Get data service 
    VSS.getService(VSS.ServiceIds.ExtensionData).then(function(dataService) { 
     // Set value in user scope 
     dataService.setValue("userScopedKey", 12345, {scopeType: "User"}).then(function(value) { 
      console.log("User scoped key value is " + value); 
     }); 
    }); 


// Get data service 
    VSS.getService(VSS.ServiceIds.ExtensionData).then(function(dataService) { 
     // Get value in user scope 
     dataService.getValue("userScopedKey", {scopeType: "User"}).then(function(value) { 
      console.log("User scoped key value is " + value); 
     }); 
    }); 

User Voice: Persist toggle state of splitter control in VSTS extension

+0

Um den Status des UI-Splitter (minimiert, erweitert) zu speichern, muss ich den Datenspeicher selbst verwalten? Es ist nicht etwas, was die Plattform bietet? –

+0

@ m-y Der Datenspeicher ist Teil der VSTS-Erweiterung und Sie müssen den Datenspeicher nicht selbst verwalten. Sie müssen lediglich die API aufrufen, um die Daten festzulegen und abzurufen. –

+0

Ich verstehe diesen Teil. Meine Frage war, ob ich die Datenspeicher-API verwenden soll, um den Status des UI-Splitters zu verwalten? Es scheint, dass der UI-Splitter seinen eigenen Status automatisch verwalten sollte. Ich dachte, dass das Hinzufügen der CSS-Klasse 'stateful' das tun würde, aber das tut es nicht. –

0

Wir haben das SDK nicht veröffentlicht, um den Status des Splitter-Steuerelements zu speichern, was dazu führt, dass die "settingPath" -Option (Nicht sicher, wie Sie diese Option erhalten, da sie nicht in unserer offiziellen Dokumentation enthalten ist) nicht funktioniert. Es gibt also keine Möglichkeit, dies automatisch für jetzt zu erreichen. Das tut mir leid. Bitte stimme über die Feature-Anfrage ab, die Starin eingereicht hat, damit wir diese Funktion im Vergleich zu anderen priorisieren können.

+0

Ich habe die Quelle auf einer anderen Seite angesehen und diese Option kopiert, weil ich dachte, dass es eine undokumentierte Funktion ist. –

Verwandte Themen