SharePoint Online navigācijas opciju

Svarīgi! :  Šis raksts ir mašīntulkots, skatiet atrunu. Lūdzu, skatiet šī raksta versiju angļu valodā šeit jūsu informācijai.

Šajā rakstā aprakstīts, kā uzlabot SharePoint Online lapu ielādes laiku, izmantojot strukturālo navigāciju un navigācija atbilstoši meklēšanas rezultātiem.

Globālās navigācijas un vaicājumi, kas jāveic, lai izveidotu strukturālo navigāciju var padarīt jūsu lapas slodze vairāk lēni pakalpojumā SharePoint Online. Tas ir tāpēc, ka katrs no šiem vaicājumu nosūta citu pieprasījumu SQL server. Katram vietnes un apakšvietnes, kas jums ir vairāk pieprasījumi tiek veiktas SQL server. Šāda problēma rodas arī lappušu šablonus. Tas nozīmē, ka globālās navigācijas arī ietekmēt.

Dažas SharePoint vietnes prasa lielas un sarežģītas struktūras. Izmantojot gatavie strukturālo navigāciju, kas izmanto saturu, vaicājumu, var izraisīt lēni lapu ielādes laiku dēļ vairākslāņu vietnes. Katras apakšvietnes slāņi tiek izveidots citā vaicājumā.

Ir divas galvenās gatavie navigācijas opcijas SharePoint, kā arī trešās, pielāgotas, atbilstoši meklēšanas pieeja. Katras opcijas ir priekšrocības un trūkumus, kā aprakstīts tālāk esošajā tabulā.

Strukturālo navigāciju

Pārvaldāmā navigācija

Navigācija atbilstoši meklēšanas rezultātiem

Speciālistiem:

  • Ērti konfigurēt

  • Drošības apgriezt

  • Automātiski atjaunina tiek pievienots vietnes

Speciālistiem:

  • Viegli uzturēt

Speciālistiem:

  • Drošības apgriezt

  • Automātiski atjaunina tiek pievienots vietnes

  • Ātri ielādes laiku un lokālajā kešatmiņā ievietotos navigācijas struktūras

Trūkumus:

  • Varat veikt slikti ar sarežģīta vietnes struktūru

Trūkumus:

  • Netiek automātiski atjaunināti, lai atspoguļotu vietņu struktūra

Trūkumus:

  • Nav iespēju ērti pasūtījuma vietnēm

  • Nepieciešama pielāgošanas lapu šablonu (technical prasmes, kas nepieciešamas)

Ja jums ir vietnes ar daudz apakšvietnes un izmantojat strukturālo navigāciju, to var kavē jūsu lapas ielādes uz leju ievērojami. Piemērotāko opciju jūsu vietnē ir atkarīgs vietnes prasības un tehniskās iespējas. Ja jums ir ērti, izmantojot pielāgotu lapu šablonu un organizācijā, lai saglabātu izmaiņas, kuras var rasties noklusējuma lapu šablonu SharePoint Online ir dažas iespējas, atbilstoši meklēšanas opciju radīs labāko lietotāja pieredzi. Ja vēlaties saņemt vienkāršu vidū zemes starp gatavie strukturālo navigāciju un meklēšanas, pārvaldāmā navigācija ir ļoti labs risinājums. Pārvaldāmās navigācijas opciju var saglabāt, izmantojot konfigurāciju, neietver kodu pielāgošanas faili, un tas ir ievērojami ātrāk nekā gatavie strukturālo navigāciju.

Cita pieeja ir pārveidot esošu vietni un samazinātu navigācijas vienumi un apakšvietnes obligāts. Tas ir tāpēc, ka strukturālo navigāciju veic labi, kamēr nav pārāk sarežģīta vietnes struktūru un navigācija.

Šajā rakstā tiek salīdzināti dažādas pieejas piemērs vietņu kolekcijā. Piemērā vietņu kolekcijā ir 11 apakšvietnes un katrā GICS vietnē ir vismaz četriem papildu apakšvietnes.

Ekrānuzņēmums, kurā redzamas vietnes un apakšvietnes

Izmantojot strukturālo navigāciju SharePoint Online

Tas tiek izmantots pēc noklusējuma gatavie navigācijas un ir vienkāršs un atbilstošās risinājums lielākajā daļā gadījumu. Ja vien nav sarežģītā struktūrā vairākas apakšvietnes vai vairāklīmeņu apakšvietnes, strukturālo navigāciju veic labi. Galvenajā šīs metodes priekšrocības, ka tas ir drošības nevajadzīgais, automātiski atjaunina, kad tiek pievienotas jaunas vietnes un neprasa jebkādas pielāgošanas lapu šablonu. Netehniskām lietotāja varat arī pievienot vienumus, Paslēpt vienumus, un pārvaldīt navigācijas iestatījumu lapā.

Ieslēdzot strukturālo navigāciju SharePoint Online

Lai parādītu, kā veiktspējas standarta SharePoint Online risinājumā ar strukturālo navigāciju un rādīt apakšvietnes opciju ieslēgts. Tālāk ir ekrānuzņēmums iestatījumi, kas atrodas lapas Vietnes iestatījumi > Navigācija.

Ekrānuzņēmums, kurā ir parādītas apakšvietnes

Analizējot strukturālo navigāciju veiktspējas SharePoint Online

Analizēt veiktspējas SharePoint lapas izmantojiet cilni tīkla F12 izstrādātājs rīku programmā Internet Explorer.

Faila pielikuma F12 izstrādes tīkla ikona

Cilnē tīklā tiek ielādēti. aspx lapā noklikšķiniet uz un pēc tam noklikšķiniet uz cilnes Detalizēta informācija .

Tīmekļa pārlūkprogrammu veidlapās nepieejami InfoPath 2010 līdzekļi

Noklikšķiniet uz Atbildes galvenes.

Pogas ekrānuzņēmums

SharePoint atgriež noderīgu diagnostikas informāciju savu atbildi galvenes. Viena no visnoderīgākās ir SPRequestDuration    , kas ir vērtība, milisekundēs, cik ilgi pieprasījumu veicāt, lai process serverī.

Šādi ekrānuzņēmums Rādīt apakšvietnes ir atzīmēta strukturālo navigāciju. Tas nozīmē, ka pastāv tikai vietņu kolekcijas saiti globālās navigācijas:

Ekrānuzņēmums, kurā redzams ielādes laiks kā pieprasījuma ilgums

SPRequestDuration    atslēga ir vērtība 245 milisekunžu skaitu. Parāda laiku, kas bija atgriezties pieprasījumu. Tā kā vietnē ir tikai vienu navigācijas vienumu, tas ir labs kritērijs kā SharePoint Online veic bez apjomīga navigācijas. Nākamajā ekrānuzņēmumā varat aplūkot, kā pievienot apakšvietnes ietekmē šo atslēgu.

Lauka vilkšana no 2502 ms

Pievienojot apakšvietnes ievērojami palielināt laiku, kas nepieciešams, lai atgrieztos lapā pieprasījumu.

Priekšrocības, izmantojot parastu strukturētu navigācijas ir tāda, ka var viegli organizēt secību, paslēpt vietnēm, pievienot lapas, rezultāti ir drošības nevajadzīgais, un jums nav atšķiras no atbalstītās izmanto SharePoint Online lapu šablonu. Ja rūpīgi strukturēt vietnes un apakšvietnes minimizētu savā vietņu kolekcijā tam strukturālo navigāciju veic labi.

Pārvaldāmā navigācija un pārvaldīto metadatu izmantošana SharePoint Online

Pārvaldāmā navigācija ir vēl viena iespēja gatavie, to var izmantot, lai atjaunotu to pašu kārtošanas funkcionalitāti kā strukturālo navigāciju.

Pārvaldīto metadatu izmantošanas priekšrocība ir tas, ka tā ir daudz ātrāk, lai izgūtu datus, nekā izmantojot saturu, vaicājumu, lai izveidotu vietnes navigāciju. Lai gan ir daudz ātrāk, nav iespējams drošības apgriešanas rezultātus tik ja lietotājam nav piekļuves ar konkrētu vietni, saites tiks joprojām tiek rādīts, bet rezultātā tiks parādīts kļūdas ziņojums.

Kā ieviest pārvaldāmā navigācija un rezultāti   

Pastāv vairāki raksti vietnē TechNet informāciju par pārvaldīto navigāciju, piemēram, skatiet rakstu pārskats par pārvaldīto navigāciju SharePoint Server 2013.

Lai ieviestu pārvaldīto navigāciju, jums ir jābūt terminu saglabātu administratora atļaujas. Izveidojot terminus ar vietrāžiem URL, kas atbilst vietņu kolekcijas struktūru, pārvaldāmā navigācija var izmantot, lai aizstātu strukturālo navigāciju. Piemēram:

Ekrānuzņēmums Subsite1 piemērs

Tālāk sniegtajā piemērā ir redzama sarežģītas navigācija, izmantojot pārvaldīto navigāciju veiktspēju.

SPRequestDuration piemēra ekrānuzņēmums

Izmantojot pārvaldīto navigāciju konsekventi uzlabo veiktspēju salīdzinājumā ar saturu, vaicājuma strukturālo navigāciju pieeja.

Izmantojot meklēšanas nodrošinātās klienta puses scripting

Izmantojot meklēšanu, jūs varat izmantot indeksi, kas tiek veidoti uz augšu, izmantojot nepārtrauktās pārmeklēšanas fonā. Tas nozīmē, ka pastāv apjomīga vaicājumi bez satura. Meklēšanas rezultāti ir velk no meklēšanas indeksam un rezultāti drošības nevajadzīgais. Tas ir ātrāk, nekā izmantojot parastu satura vaicājumu. Izmantojot meklēšanas strukturālo navigāciju, it īpaši, ja jums ir sarežģīta vietnes struktūru, tiks paātrināt lapas ielādes laikā ievērojami. Galvenā priekšrocība ir tas virs pārvaldāmā navigācija ir gūt labumu no drošības apgriešana.

Šīs metodes ietver izveidojot pielāgotu lapu šablonu un aizstājot gatavie navigācijas kodu ar pielāgoto HTML. Izpildiet šo procedūru, lai aizstātu faila seattle.html navigācijas kodu.

Šajā piemērā jūs atverat failu seattle.html un nomainiet visu elementu id = "DeltaTopNavigation" ar pielāgotu HTML kodu.

Piemērs: Aizstāt gatavie navigācijas kods lapu šablonā

  1. Naviģējiet uz lapu Vietnes iestatījumi .

  2. Atveriet lapu šablonu galerijā, noklikšķinot uz Lappušu šabloni.

  3. Šeit varat pāriešana no bibliotēkas un lejupielādēt failu seattle.master.

  4. Rediģēt kodu, izmantojot teksta redaktoru un izdzēsiet šādi ekrānuzņēmums koda blokā.

    Failu saglabāšana mākonī
  5. Noņemiet kodu starp < SharePoint:AjaxDelta id = "DeltaTopNavigation" > < \SharePoint:AjaxDelta > tagus un aizstāt to ar šādu fragmentu:

    <div id="loading">
      <!--Replace with path to loading image.-->
      <div style="background-image: url(''); height: 22px; width: 22px; ">
      </div>
    </div>
    <!-- Main Content-->
    <div id="navContainer" style="display:none">
        <div data-bind="foreach: hierarchy" class="noindex ms-core-listMenu-horizontalBox">
            <a class="dynamic menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode" data-bind="attr: { href: item.Url, title: item.Title }">
                <span class="menu-item-text" data-bind="text: item.Title">
                </span>
            </a>
            <ul id="menu" data-bind="foreach: $data.children" style="padding-left:20px">
                <li class="static dynamic-children">
                    <a class="static dynamic-children menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode" data-bind="attr: { href: item.Url, title: item.Title }">
                        <span aria-haspopup="true" class="additional-background ms-navedit-flyoutArrow dynamic-children">
                            <span class="menu-item-text" data-bind="text: item.Title">
                            </span>
                        </span>
                    </a>
                    <ul id="menu" data-bind="foreach: children; visible: children.length>0" class="dynamic" >
                        <li class="dynamic">
                            <a class="dynamic menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode" data-bind="attr: { href: item.Url, title: item.Title }">
                                <span class="menu-item-text" data-bind="text: item.Title">
                                </span>
                            </a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
  6. Aizstājiet vietrādi URL ielādējot attēlu enkura taga sākumā ar saiti uz ielādes attēlu savā vietņu kolekcijā. Kad esat veicis izmaiņas, pārdēvējiet failu un pēc tam augšupielādēt to lapu šablonu galerijā. Tas izveido jaunu Master failu.

  7. Šajā HTML ir pamata atzīmes, kas būs aizpildīta meklēšanas rezultāti, kas iegūti no JavaScript kodu. Jums būs nepieciešama, lai rediģētu šādu kodu, lai mainītu var root = “site collection URL vērtību, kas parādītas šādu fragmentu:

    var root = “https://spperformance.sharepoint.com/sites/NavigationBySearch”;

    Visu JavaScript failu ir šāda:

    //Models and Namespaces
    var SPOCustom = SPOCustom || {};
    SPOCustom.Models = SPOCustom.Models || {}
    SPOCustom.Models.NavigationNode = function () {
    
        this.Url = ko.observable("");
        this.Title = ko.observable("");
        this.Parent = ko.observable("");
    
    };
    
    var root = "https://spperformance.sharepoint.com/sites/NavigationBySearch";
    var baseUrl = root + "/_api/search/query?querytext=";
    var query = baseUrl + "'contentClass=\"STS_Web\"+path:" + root + "'&trimduplicates=false&rowlimit=300";
    
    var baseRequest = {
        url: "",
        type: ""
    };
    
    
    //Parses a local object from JSON search result.
    function getNavigationFromDto(dto) {
        var item = new SPOCustom.Models.NavigationNode();
        if (dto != undefined) {
    
            var webTemplate = getSearchResultsValue(dto.Cells.results, 'WebTemplate');
    
            if (webTemplate != "APP") {
                item.Title(getSearchResultsValue(dto.Cells.results, 'Title')); //Key = Title
                item.Url(getSearchResultsValue(dto.Cells.results, 'Path')); //Key = Path
                item.Parent(getSearchResultsValue(dto.Cells.results, 'ParentLink')); //Key = ParentLink
            }
    
        }
        return item;
    }
    
    function getSearchResultsValue(results, key) {
    
        for (i = 0; i < results.length; i++) {
            if (results[i].Key == key) {
                return results[i].Value;
            }
        }
        return null;
    }
    
    //Parse a local object from the serialized cache.
    function getNavigationFromCache(dto) {
        var item = new SPOCustom.Models.NavigationNode();
    
        if (dto != undefined) {
    
            item.Title(dto.Title);
            item.Url(dto.Url);
            item.Parent(dto.Parent);
        }
    
        return item;
    }
    
    /* create a new OData request for JSON response */
    function getRequest(endpoint) {
        var request = baseRequest;
        request.type = "GET";
        request.url = endpoint;
        request.headers = { ACCEPT: "application/json;odata=verbose" };
        return request;
    };
    
    /* Navigation Module*/
    function NavigationViewModel() {
        "use strict";
        var self = this;
        self.nodes = ko.observableArray([]);
        self.hierarchy = ko.observableArray([]);;
        self.loadNavigatioNodes = function () {
            //Check local storage for cached navigation datasource.
            var fromStorage = localStorage["nodesCache"];
            if (false) {
                var cachedNodes = JSON.parse(localStorage["nodesCache"]);
    
                if (cachedNodes && timeStamp) {
                    //Check for cache expiration. Currently set to 3 hrs.
                    var now = new Date();
                    var diff = now.getTime() - timeStamp;
                    if (Math.round(diff / (1000 * 60 * 60)) < 3) {
    
                        //return from cache.
                        var cacheResults = [];
                        $.each(cachedNodes, function (i, item) {
                            var nodeitem = getNavigationFromCache(item, true);
                            cacheResults.push(nodeitem);
                        });
    
                        self.buildHierarchy(cacheResults);
                        self.toggleView();
                        addEventsToElements();
                        return;
                    }
                }
            }
            //No cache hit, REST call required.
            self.queryRemoteInterface();
        };
    
        //Executes a REST call and builds the navigation hierarchy.
        self.queryRemoteInterface = function () {
            var oDataRequest = getRequest(query);
            $.ajax(oDataRequest).done(function (data) {
                var results = [];
                $.each(data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results, function (i, item) {
    
                    if (i == 0) {
                        //Add root element.
                        var rootItem = new SPOCustom.Models.NavigationNode();
                        rootItem.Title("Root");
                        rootItem.Url(root);
                        rootItem.Parent(null);
                        results.push(rootItem);
                    }
                    var navItem = getNavigationFromDto(item);
                    results.push(navItem);
                });
                //Add to local cache
                localStorage["nodesCache"] = ko.toJSON(results);
    
                localStorage["nodesCachedAt"] = new Date().getTime();
                self.nodes(results);
                if (self.nodes().length > 0) {
                    var unsortedArray = self.nodes();
                    var sortedArray = unsortedArray.sort(self.sortObjectsInArray);
    
                    self.buildHierarchy(sortedArray);
                    self.toggleView();
                    addEventsToElements();
                }
            }).fail(function () {
                //Handle error here!!
                $("#loading").hide();
                $("#error").show();
            });
        };
        self.toggleView = function () {
            var navContainer = document.getElementById("navContainer");
            ko.applyBindings(self, navContainer);
            $("#loading").hide();
            $("#navContainer").show();
    
        };
        //Uses linq.js to build the navigation tree.
        self.buildHierarchy = function (enumerable) {
            self.hierarchy(Enumerable.From(enumerable).ByHierarchy(function (d) {
                return d.Parent() == null;
            }, function (parent, child) {
                if (parent.Url() == null || child.Parent() == null)
                    return false;
                return parent.Url().toUpperCase() == child.Parent().toUpperCase();
            }).ToArray());
    
            self.sortChildren(self.hierarchy()[0]);
        };
    
    
        self.sortChildren = function (parent) {
    
            // sjip processing if no children
            if (!parent || !parent.children || parent.children.length === 0) {
                return;
            }
    
            parent.children = parent.children.sort(self.sortObjectsInArray2);
    
            for (var i = 0; i < parent.children.length; i++) {
                var elem = parent.children[i];
    
                if (elem.children && elem.children.length > 0) {
                    self.sortChildren(elem);
                }
            }
        };
    
        // ByHierarchy method breaks the sorting in chrome and firefix 
        // we need to resort  as ascending
        self.sortObjectsInArray2 = function (a, b) {
            if (a.item.Title() > b.item.Title())
                return 1;
            if (a.item.Title() < b.item.Title())
                return -1;
            return 0;
        };
    
    
        self.sortObjectsInArray = function (a, b) {
            if (a.Title() > b.Title())
                return -1;
            if (a.Title() < b.Title())
                return 1;
            return 0;
        }
    }
    
    //Loads the navigation on load and binds the event handlers for mouse interaction.
    function InitCustomNav() {
        var viewModel = new NavigationViewModel();
        viewModel.loadNavigatioNodes();
    }
    
    function addEventsToElements() {
        //events.
        $("li.dynamic-children").mouseover(function () {
            var position = $(this).position();
            $(this).find("ul").css({ width: 125, left: position.left + 10, top: 50 });
    
        })
            .mouseout(function () {
                $(this).find("ul").css({ width: 0, left: -99999, top: 0 });
            });
    }
    
    _spBodyOnLoadFunctionNames.push("InitCustomNav");
    

    Apkopot kodu parādīts iepriekš jQuery $(document).ready funkcija ir viewModel objektu, kas izveidots, un pēc tam loadNavigationNodes() funkcija šim objektam tiek dēvēta par. Šī funkcija vai nu ielādē iepriekš izveidotas navigācijas hierarhijas glabātas HTML5 lokālā krātuve klienta pārlūkprogrammā vai tā aicina funkcija queryRemoteInterface().

    QueryRemoteInterface() veido pieprasījumu, izmantojot getRequest() funkcija ar iepriekš definēti skriptu parametru vaicājumu un pēc tam atgriež datus no servera. Šie dati ir būtībā masīva ar visām vietnēm vietņu kolekcijā, kas attēlots kā datu pārsūtīšana objekti ar dažādiem rekvizītiem. Šos datus tiek parsēts iepriekš definētu SPO.Models.NavigationNode objektos, kas izmanto Knockout.js izveidot novērojamas rekvizītus izmantošanai, datu saistīšana vērtības uz HTML, kas tika definēta iepriekš. Objekti tiek ievietoti pēc tam rezultātu masīvu. Šajā masīvā ir parsēt uz JSON, izmantojot izslēgšanas un saglabāti lokālās pārlūkprogrammas krātuvē, lai uzlabotu veiktspēju, izmantojot nākotnes lapu ielādes laikam.

  8. Pēc tam rezultāti ir piešķirtas self.nodes masīva un hierarhiju ir veidots no objektus, izmantojot linq.js izvades piešķiršana masīva self.heirarchy. Šajā masīvā ir objekts, kas ir saistīta ar HTML. Tas tiek darīts funkcijā toggleView() iet sevis objekta ko.applyBinding() funkcijas. Tas izraisa tam hierarhijas masīva saistošs šādi HTML:

    <div data-bind=”foreach: hierarchy” class=”noindex ms-core-listMenu-horizontalBox”>

    Visbeidzot, mouseenter un mouseexit notikumu apdarinātāja tiek pievienotas augstākā līmeņa navigācijas apstrādāt apakšvietnes nolaižamās izvēlnes, kas tiek darīts addEventsToElements() funkcija.

    Navigācijas rezultātus var redzēt ekrānuzņēmums zemāk:

    Navigācijas rezultātu ekrānuzņēmums

    Mūsu sarežģītas navigācijas piemērā svaigu lapu ielādes bez Lokālās kešošanas tiek parādīts laiku, kas pavadīts serverī ir samazināt uz leju no kritērijs strukturālo navigāciju iegūšanai līdzīgs rezultāts, kā pārvaldīto navigāciju pieeja.

    Zilas krāsas elementu virkne, kas strukturē SharePoint 2013 līdzekļu pamatvienumus, tie ir Kopīgot, Kārtot, Atklāt, Veidot un Pārvaldīt.

    Vienu galveno šīs metodes priekšrocība ir tas, izmantojot HTML5 lokālās krātuves, navigācijas tiek glabāti lokāli lietotājam nākamajā reizē, kad tie slodze lapu.

Mēs galvenās veiktspējas uzlabojumi, izmantojot meklēšanas API strukturālo navigāciju; Tomēr ir jāveic dažas tehnisko iespēju izpildīt un pielāgot šo funkcionalitāti. Izpildē piemērs vietnēm ir sakārtotas tādā pašā veidā, kā gatavie strukturālo navigāciju; alfabētiskā secībā. Ja vēlaties atšķiras no norādītajā secībā, tas būtu daudz sarežģītāka attīstīt un saglabāt. Turklāt šo pieeju ir nepieciešams atšķiras no atbalstītās lapu šabloni. Ja pielāgotais lapu šablons nav saglabāta, jūsu vietnē būs garām uz atjauninājumus un uzlabojumi, kas Microsoft izveido lappušu šablonus.

Iepriekš kods ir šādas atkarības.

Pašreizējā versija LinqJS nesatur ByHierarchy metode, ko izmanto iepriekš kodu un būs pārtraukums navigācijas kodu. Lai atrisinātu šo problēmu, pievienojiet šādu metodi Linq.js failam pirms rindas "Flatten: funkcija ()".

ByHierarchy: function(firstLevel, connectBy, orderBy, ascending, parent) {
     ascending = ascending == undefined ? true : ascending;
     var orderMethod = ascending == true ? 'OrderBy' : 'OrderByDescending';
     var source = this;
     firstLevel = Utils.CreateLambda(firstLevel);
     connectBy = Utils.CreateLambda(connectBy);
     orderBy = Utils.CreateLambda(orderBy);
    
     //Initiate or increase level
     var level = parent === undefined ? 1 : parent.level + 1;

    return new Enumerable(function() {
         var enumerator;
         var index = 0;

        var createLevel = function() {
                 var obj = {
                     item: enumerator.Current(),
                     level : level
                 };
                 obj.children = Enumerable.From(source).ByHierarchy(firstLevel, connectBy, orderBy, ascending, obj);
                 if (orderBy !== undefined) {
                     obj.children = obj.children[orderMethod](function(d) {
                         return orderBy(d.item); //unwrap the actual item for sort to work
                     });
                 }
                 obj.children = obj.children.ToArray();
                 Enumerable.From(obj.children).ForEach(function(child) {
                     child.getParent = function() {
                         return obj;
                     };
                 });
                 return obj;
             };

        return new IEnumerator(

        function() {
             enumerator = source.GetEnumerator();
         }, function() {
             while (enumerator.MoveNext()) {
                 var returnArr;
                 if (!parent) {
                     if (firstLevel(enumerator.Current(), index++)) {
                         return this.Yield(createLevel());
                     }

                } else {
                     if (connectBy(parent.item, enumerator.Current(), index++)) {
                         return this.Yield(createLevel());
                     }
                 }
             }
             return false;
         }, function() {
             Utils.Dispose(enumerator);
         })
     });
 },

Piezīme : Mašīntulkošanas atruna. Šo rakstu ir tulkojusi datorsistēma bez cilvēka iejaukšanās. Microsoft piedāvā šos mašīntulkojumus, lai palīdzētu angliski nerunājošajiem lietotājiem izmanot saturu par Microsoft produktiem, pakalpojumiem un tehnoloģijām. Tā kā šis raksts ir mašīntulkots, tajā var būt leksikas, sintakses un gramatikas kļūdas.

Paplašiniet savas prasmes
Iepazīties ar apmācību
Esiet pirmais, kas saņem jaunās iespējas
Pievienoties Office Insider programmai

Vai šī informācija bija noderīga?

Paldies par jūsu atsauksmēm!

Paldies par atsauksmēm! Šķiet, ka varētu būt noderīgi sazināties ar kādu no mūsu Office atbalsta aģentiem.

×