2016-03-28 13 views
0

yönlendirmek için, şablon içerir:Kor, bileşen ben karşılık gelen rota, denetleyici ve birkaç bileşenleri ile, <code>activities</code> güzergahları var benim kor uygulamasında

{{carousel-activities activities=model}}

carousel-activities içerir:

{{#each activities as |activity|}} 
    <li>{{carousel-block activity=activity}}</li> 
    {{/each}} 

<div class="carousel-block"> 
    {{#link-to 'activity' activity class="small"}} 
    <div class="full-width-image"> 
     <img src="{{activity.image}}" class="img img-responsive full-width" alt="{{activity.title}}"> 
    </div> 
    <div class="text-center"> 
     <h1>{{activity.title}}</h1> 
    </div> 
    {{/link-to}} 
</div> 
:

carousel-block, her bir faaliyet içeriğini göstermek için bazı HBS içeren

Blok bileşeni, panDown izlemek için ember-gestures kullanır, olay gerçekleştiğinde, blok tarayıcıyı aktivite ayrıntıları sayfasına yönlendirir.

#app/controllers/activities.js 
import Ember from 'ember'; 

export default Ember.Controller.extend({ 

}); 

#app/components/carousel-activities.js 
import RecognizerMixin from 'ember-gestures/mixins/recognizers'; 
import Ember from 'ember'; 

const { 
    Component 
} = Ember; 

export default Component.extend(RecognizerMixin, { 
    recognizers: 'pan', 
    panDown() { 
    console.log("panDown"); 
    this.transitionTo('activity', this.get('activity')); 
    } 
}); 

#app/components/carousel-block.js 
import Ember from 'ember'; 

export default Ember.Component.extend({ 
}); 

Ben faaliyetleri rotayı yüklemek ve üzerine aşağıda kaydırma ben konsolunda bu hatayı alıyorum (panDown olay yükseltmek) ise:

panDown 
ember.debug.js:6208 DEPRECATION: Ember.View#transitionTo has been deprecated, it is for internal use only [deprecation id: ember-views.view-transition-to] 
     at HANDLERS.(anonymous function) (http://localhost:4200/assets/vendor.js:16380:7) 
     at raiseOnDeprecation (http://localhost:4200/assets/vendor.js:16290:12) 
     at HANDLERS.(anonymous function) (http://localhost:4200/assets/vendor.js:16380:7) 
     at invoke (http://localhost:4200/assets/vendor.js:16396:7) 
     at deprecate (http://localhost:4200/assets/vendor.js:16349:32) 
     at Object.deprecate (http://localhost:4200/assets/vendor.js:26468:37) 
     at _emberMetalMixin.Mixin.create.transitionTo (http://localhost:4200/assets/vendor.js:52805:24) 
     at panDown (http://localhost:4200/assets/myproject.js:261:12) 
     at _emberRuntimeSystemObject.default.extend.trigger (http://localhost:4200/assets/vendor.js:55654:23) 
ember.debug.js:42747 Uncaught TypeError: Cannot read property 'enter' of undefined_emberMetalMixin.Mixin.create._transitionTo @ ember.debug.js:42747_emberMetalMixin.Mixin.create.transitionTo @ ember.debug.js:42736panDown @ carousel-activities.js:24_emberRuntimeSystemObject.default.extend.trigger @ ember.debug.js:45584superWrapper @ ember.debug.js:23209Backburner.run @ ember.debug.js:678Backburner.join @ ember.debug.js:702run.join @ ember.debug.js:21280_emberMetalAssign.default.handleEvent @ ember.debug.js:46458exports.default._emberMetalMixin.Mixin.create._Mixin$create.handleEvent @ ember.debug.js:43395exports.default._emberRuntimeSystemObject.default.extend._bubbleEvent @ ember.debug.js:44482(anonymous function) @ ember.debug.js:44424jQuery.event.dispatch @ jquery.js:4737elemData.handle @ jquery.js:4549triggerDomEvent @ hammer.js:2497Manager.emit @ hammer.js:2438emit @ hammer.js:1474Recognizer.emit @ hammer.js:1485inherit.emit @ hammer.js:1764Recognizer.tryEmit @ hammer.js:1502Recognizer.recognize @ hammer.js:1549Manager.recognize @ hammer.js:2314inputHandler @ hammer.js:517MEhandler @ hammer.js:826Input.domHandler @ hammer.js:430 

cevap

2

Bir bileşenden transitionTo() öğesini arayamazsınız. En iyi yol, bunun yerine, denetleyiciden geçiş yapacak bir eylem göndermek olacaktır.

export default Component.extend(RecognizerMixin, { 
    recognizers: 'pan', 
    panDown() { 
    console.log("panDown"); 
    this.attrs.showDetailsAction(this.get('activity')); 
    } 
}); 

Ve sonra denetleyicisi harekete tanımlayın:

export default Ember.Controller.extend({ 
    actions: { 
    showDetails(activityData) { 
     this.transitionToRoute('activity', activityData); 
    } 
    } 
}); 

Ve bileşen için harekete geçmesi:

{{carousel-block activity=activity showDetailsAction=(action 'showDetails')}} 
+0

Ben 'etmek şablonda da harekete geçmesi gerektiğini carousel-activities' ile {{carousel-activity activities = model showDetailsAction = (action 'showDetails')}} '?? –

+1

Evet, pardon. Yani {{carousel-activity activities = model showDetailsAction = (action 'showDetails')}} 've sonra {{carousel-block activity = etkinlik showDetailsAction = attrs.showDetailsAction}}' yaparsınız – Igor

İlgili konular