2014-07-23 14 views
7

Görüntüleyicinin sahibi olup olmadığına bağlı olarak düzenleme yapmak için bir panel oluşturmaya çalışıyorum. Şu anda, sadece panel/kısmi görünümü html'ye enjekte ederken sorun yaşıyorum. Kompozisyonlarım/views/view.html'nin kısmi olarak enjekte edildiği 'base' html sayfası olmasını istiyorum. Daha sonra kısmi görünüm kompozisyonlar/görünümler/bölümler/views.tools.html. $ StateProvider'ımda yanlış olan bir şey görüyor mu? Neden benim view.html bölümüne benim kısmi enjekte edemediğimi açıklıyor? Bu benim biçimlendirme benim view.html içindir

$stateProvider 
     .state('all compositions', { 
      url: '/compositions/recent', 
      templateUrl: 'compositions/views/list.html' 
     }). 
      state('view', { 
       url: '/compositions/view/:compositionId', 
       views: { 
       'theTool':{ 
       templateUrl:'compositions/views/partials/view.tool.html' , 
        controller: 'CompositionsController' 
       } 
       }, 
       templateUrl: 'compositions/views/view.html', 
       controller: 'CompositionsController', 

      }). //other states here 

(ana html)

<div ui-view="theTool"></div> 
<section data-ng-controller="CompositionsController" data-ng-init="findOne()"> 
    <h2>{{composition.title}}</h2> 
    <div ng-bind-html="trustedContent"></div> 
</section> 

Herhangi bir yardım veya tavsiye büyük takdir:

İşte benim $ stateProvider olduğunu. Teşekkürler

+0

Konsolda alma hangi hata? – V31

+0

Bu çift templateUrl ve denetleyiciyi 'view' adlı görünümde temizleyerek başlarım. –

+0

Düzenleyici panelini koşullu olarak gösteren bir yönerge muhtemelen daha uygun olur. – craigb

cevap

11

Burada, tüm yanıtları vermesi gereken bir working example oluşturdum.

düzeltilmiş devlet Definition geçerli:

$stateProvider 
    .state('allCompositions', { 
    url: '/compositions/recent', 
    templateUrl: 'compositions.views.list.html' 
    }). 

state('view', { 
    url: '/compositions/view/:compositionId', 
    views: { 
    '': { 
     templateUrl: 'compositions.views.view.html', 
     controller: 'CompositionsController', 
    }, 
    '[email protected]': { 
     templateUrl: 'compositions.views.partials.view.tool.html', 
     controller: 'CompositionsController' 
    } 
    }, 

en önemlisidir, compositions.views.view.html şimdi kardeş görünüm theTool için bir hedef rolünü oynadığını. Her iki görüş de aynı durumda ('görünüm') tanımlanır, ancak bunlardan biri diğerine enjekte edilir. böylece

<!--<div ui-view="theTool"></div>--> 
<div ui-view=""></div> 

şimdi yerine adlandırılmış bir isimsiz ui-görünümü var:

Ayrıca index.html ben bu değişikliği yaptık. Her iki

  • allCompostions '' isimsiz görünümü hedef

artık düzgün oluşturulur

  • görünümü devletler nedeni budur.

    alıntı: daha burada görünümü ekleme mantığı hakkında daha fazla bu example

    Se Sahne arkası

    , her görünüm mutlak atanır [email protected] şemasını izleyen ad, burada görünüm adı na görünüm yönergesinde kullandım ve eyalet adı devletin mutlak adıdır, örn. contact.item. Ayrıca, görünüm adlarınızı mutlak sözdiziminde yazmayı da seçebilirsiniz. aynı kaynaktan

    Müthiş örnekler:

    .state('contacts.detail', { 
        views: { 
        //////////////////////////////////// 
        // Relative Targeting    // 
        // Targets parent state ui-view's // 
        //////////////////////////////////// 
    
        // Relatively targets the 'detail' view in this state's parent state, 'contacts'. 
        // <div ui-view='detail'/> within contacts.html 
        "detail" : { },    
    
        // Relatively targets the unnamed view in this state's parent state, 'contacts'. 
        // <div ui-view/> within contacts.html 
        "" : { }, 
    
        /////////////////////////////////////////////////////// 
        // Absolute Targeting using '@'      // 
        // Targets any view within this state or an ancestor // 
        /////////////////////////////////////////////////////// 
    
        // Absolutely targets the 'info' view in this state, 'contacts.detail'. 
        // <div ui-view='info'/> within contacts.detail.html 
        "[email protected]" : { } 
    
        // Absolutely targets the 'detail' view in the 'contacts' state. 
        // <div ui-view='detail'/> within contacts.html 
        "[email protected]" : { } 
    
        // Absolutely targets the unnamed view in parent 'contacts' state. 
        // <div ui-view/> within contacts.html 
        "@contacts" : { } 
    
  • +0

    Detaylı sorun ve hızlı geri bildirim için çok teşekkür ederim. Bu yardımcı oldu, ama hala birkaç şey üzerinde kafam karıştı. TemplateUrl yolunu neden '' olarak değiştirdiniz? yerine '/'? Bir yeniden yönlendirme eklemediğim için garip olan/composition/view/15/best/composition/recent dizinine gittiğimde yeniden yönlendiriliyordum. Plunker üzerinde yapılandırma gördüm ve bunu dahil etmedi .. – courtyen

    +0

    Yönlendirme nedenini söylemek zor ... ama plunker çalışıyor, bu yüzden bu bölümleri kullanmayı deneyin ... ve yerel şeyler çalışmalıdır. Son durum nedir? Eğer soru uzarsanız ve ben yardım etmek için ble olacak ... –

    +0

    Tamam! İşe yarıyor! Çok teşekkür ederim!!! Bu harika. Yönlendirme ile ilgili sorun, ana şablonumla 404 hatası almamdı. Bazı dosyaları yeniden adlandırmaya çalışıyordum ve sildim. Onu geri yükledikten sonra çalıştı. – courtyen