2014-03-05 18 views
0

我的應用程序Emberjs路徑模型,具有這樣我使用的觀點與我的觀點是這樣來顯示從其他模板中的數據頁:與視圖

<script type="text/x-handlebars" data-template-name="enquiry"> 
     [...] // some other information display before 
    {{view App.EnquirySelectedVehicleView}} 
</script> 

<script type="text/x-handlebars" data-template-name="selectedVehicle"> 
    // Here is my content 
</script> 

我的地圖看起來是這樣的:

this.resource('enquiry', { path: '/enquiry/:enquiry_id'}, function() { 
    this.route('selectedVehicle'); 
}); 

閱讀文檔我只是在我看來,這樣做後:

App.EnquirySelectedVehicleView = Ember.View.extend({ 
    templateName: 'selectedVehicle' 
}); 

到目前爲止好,它顯示了從模板中的文本。但是我需要自動地從這個模板(selectedVehicle)中的ajax調用中返回數據,就像你在/ inquiry/1 /時獲取數據一樣。

我在我的路由器做到了這一點:

App.EnquirySelectedVehicle = Ember.Object.extend({}); 

App.EnquirySelectedVehicleRoute = Ember.Route.extend({ 
    model: function() { 
     console.log('DEBUG: SelectedVehicle Model'); 
     App.SelectedVehicle.vehicleStock(this) 
    } 
}); 

App.EnquirySelectedVehicle.reopenClass({ 
    vehicleStock: function(that) { 
     console.log('DEBUG: Fetch vehicle stock'); 
     // Here come the ajax call 
    } 
}); 

但我的問題是,路線不調用..我怎樣才能從我的selectedVehicleRoute返回一定的價值,當我在/查詢/ 1視圖模板中的頁面? (不知道我是否問得對)

感謝您的幫助!

[編輯]

@Fanta:我想我開始明白,我怎麼能做到這一點:

App.EnquiryRoute = Ember.Route.extend({ 
    beforeModel: function(transition) { 
     this.controllerFor('login').send('isSession', transition); 
    }, 
    model: function(param) { 
     var promise = new Ember.RSVP.Promise(function(resolve, reject) { 
      var modelData = {enquiry: {}, vehicleStock: {}}; 
      Ember.$ 
      .get(host + '/enquiry/' + param['enquiry_id'], function(data) { 
       console.log('DEBUG: Enquriry GET OK id = ' + param['enquiry_id']); 
       modelData.enquiry = data.enquiry; 
       Ember.$.get(host + '/vehiclestock/' + data.enquiry.VehicleStockId, function(data) { 
        console.log('DEBUG: VehicleStock GET OK id = ' + data.enquiry.VehicleStockId) 
        console.log(data); 
        modelData.vehicleStock = data.vehicleStock; 
        resolve(modelData); 
       }); 
      }); 
     }); 
     return promise; 
    } 
}); 

看來工作,現在我要弄清楚如何顯示我的對象:)但感謝你的幫助,這實際上讓我以不同的方式解決它!

+0

檢查文檔http://emberjs.com/guides/routing/defining-your-routes/如果檢查,你會發現你的路線應該是這樣的App.EnquirySelectedVehicleRoute – fanta

+0

我編輯了主題來把這個修改,但它仍然是一樣的,沒有什麼是觸發路由器.. – SuperMarco

+0

創建你的代碼的小提琴,這將對我們來說更容易幫助。 – fanta

回答

1

爲了將來的參考,只需要去https://github.com/emberjs/ember.js/blob/master/CONTRIBUTING.md,你會看到兩個鏈接,一個是JSFiddle,另一個是基本設置的JSBin。

您確定路線沒有被呼叫嗎?我創建了一個小提琴,http://jsfiddle.net/NQKvy/817/如果選中JS控制檯,你會在日誌中看到:

DEBUG: SelectedVehicle Model 
DEBUG: Fetch vehicle stock 
+0

我100%確定我的路線isn打電話。但在你的小提琴你正在做一個enquiry.selectedVehicle重定向。但我從來沒有達到我的網址,因爲我總是在查詢/ ID。我想在我的查詢中顯示來自此模板的數據,但我需要從我的服務器獲取一些數據。 – SuperMarco

+0

好吧,那麼,請使用我給你的小提琴,並放置更多的代碼,以查看你是如何做的。 – fanta

+0

http://jsfiddle.net/NQKvy/818/我已經把我的大部分代碼。爲了快速解釋它,我有一個查詢列表,我使用YUI來顯示它。我用didInsertElement捕獲click事件來觸發我的控制器,並將我重定向到/ inquiry/id處的正確查詢。並在我的網頁查詢/編號我想顯示一些信息來自不同的Ajax調用,但在一個頁面。這就是爲什麼我想用視圖來顯示它。 – SuperMarco