2016-05-14 3 views
0

Ich habe diese Konfiguration für Winkel-ui-Router:Gibt es eine Möglichkeit, dass ich einen abstrakten Zustand haben kann, um zu vermeiden, dieselben Details der Ansichtsvorlage zu wiederholen?

var rootSubjectsSubjectAdminWordsWord = { 
    name: 'r.s.s.a.w.w', 
    template: "<div ui-view='wordData'></div><div ui-view='wordForms'></div>", 
    url: '/:wordId', 
}; 

var rootSubjectsSubjectAdminWordsWordDelete = { 
    name: 'r.s.s.a.w.w.delete', 
    views: { 
     "[email protected]": { 
      templateProvider: ['$templateCache', ($templateCache) => { 
       return $templateCache.get('/app/admin/word/wordData.html'); 
      }] 
     }, 
     "[email protected]": { 
      templateProvider: ['$templateCache', ($templateCache) => { 
       return $templateCache.get('/app/admin/word/wordForms.html'); 
      }] 
     } 
    }, 
    url: '/delete', 
}; 

var rootSubjectsSubjectAdminWordsWordEdit = { 
    name: 'r.s.s.a.w.w.edit', 
    views: { 
     "[email protected]": { 
      templateProvider: ['$templateCache', ($templateCache) => { 
       return $templateCache.get('/app/admin/word/wordData.html'); 
      }] 
     }, 
     "[email protected]": { 
      templateProvider: ['$templateCache', ($templateCache) => { 
       return $templateCache.get('/app/admin/word/wordForms.html'); 
      }] 
     } 
    }, 
    url: '/edit', 
}; 

ich bearbeitet habe, löschen und einen neuen Zustand, dass alle die gleichen „Ansichten“. Gibt es eine Möglichkeit, einen abstrakten Zustand zu haben, der nur die Definition der Ansichten enthält, so dass ich es vermeiden kann, jedes Mal "Ansichten" zu wiederholen?

Antwort

1

können Sie gemeinsam genutzte erstellen Variable mit Blick config:

var sharedViewConfig = { 
    "[email protected]": { 
     templateProvider: ['$templateCache', ($templateCache) => { 
      return $templateCache.get('/app/admin/word/wordData.html'); 
     }] 
    }, 
    "[email protected]": { 
     templateProvider: ['$templateCache', ($templateCache) => { 
      return $templateCache.get('/app/admin/word/wordForms.html'); 
     }] 
    } 
}; 

var rootSubjectsSubjectAdminWordsWordDelete = { 
    name: 'r.s.s.a.w.w.delete', 
    views: sharedViewConfig, 
    url: '/delete', 
}; 

var rootSubjectsSubjectAdminWordsWordEdit = { 
    name: 'r.s.s.a.w.w.edit', 
    views: sharedViewConfig, 
    url: '/edit', 
}; 

Oder Sie können einen abstrakten Zustand erstellen:

var abstractState = { 
    name: 'r.s.s.a.w.w.abstract', 
    abstract: true, 
    views: { 
     "[email protected]": { 
      templateProvider: ['$templateCache', ($templateCache) => { 
       return $templateCache.get('/app/admin/word/wordData.html'); 
      }] 
     }, 
     "[email protected]": { 
      templateProvider: ['$templateCache', ($templateCache) => { 
       return $templateCache.get('/app/admin/word/wordForms.html'); 
      }] 
     } 
    } 
}; 

var rootSubjectsSubjectAdminWordsWordDelete = { 
    name: 'r.s.s.a.w.w.delete', 
    parent: 'r.s.s.a.w.w.abstract', 
    url: '/delete', 
}; 

var rootSubjectsSubjectAdminWordsWordEdit = { 
    name: 'r.s.s.a.w.w.edit', 
    parent: 'r.s.s.a.w.w.abstract', 
    url: '/edit', 
}; 
+0

Danke. In der abstrakten Ansicht hast du die URL: '/ delete', ich denke das ist ein Fehler. Kannst du dir deine Antwort ansehen? Auch in den WordsDelete und WordsEdit kann ich einfach "abstrakt" in den Namen hinzufügen, um die Notwendigkeit für Eltern zu vermeiden? Vielen Dank –

+0

Definitiv haben Sie Recht, es ist Kopie einfügen Fehler :) 'Abstract: true' sollte auch in abstrakte Zustandsdefinition eingefügt werden. Ich habe korrigiert, jetzt sollte es in Ordnung sein. –

+0

Um "Eltern" aus der Zustandsdefinition zu entfernen, können Sie richtige Zustandsnamen verwenden, dh wenn Sie einen Basiszustand haben, der abstrakt ist (oder nicht) und seinen Namen "Basis" hat, dann zeigt jeder Zustand mit dem Namen 'Basis.etwas 'auf' Basis ' 'als sein Elternteil. –

1

try folgenden

var viewDes= { 
      "[email protected]": { 
       templateProvider: ['$templateCache', ($templateCache) => { 
        return $templateCache.get('/app/admin/word/wordData.html'); 
       }] 
      }, 
      "[email protected]": { 
       templateProvider: ['$templateCache', ($templateCache) => { 
        return $templateCache.get('/app/admin/word/wordForms.html'); 
       }] 
      } 
     }; 
var rootSubjectsSubjectAdminWordsWordDelete = { 
     name: 'r.s.s.a.w.w.delete', 
     views: viewDes, 
     url: '/delete', 
    }; 

    var rootSubjectsSubjectAdminWordsWordEdit = { 
     name: 'r.s.s.a.w.w.edit', 
     views: viewDes, 
     url: '/edit', 
    }; 
Verwandte Themen