簡體   English   中英

Ember.js ::無法在視圖中呈現ember.js模型

[英]Ember.js :: Cannot render ember.js models in view

如果有人可以讓我擺脫這種痛苦,我將不勝感激,讓我發狂,我知道這將變得非常簡單。

我有一個數組:

數據

var test = [{"name":"Kober Ltd","town":"Bradford","type":"Z1CA","number":3650645629},
{"name":"Branston Ltd.","town":"Lincoln","type":"Z1CA","number":3650645630}]

我想將此信息呈現為collectionView中的子元素:

的CollectionView

App.ThreeView = Ember.CollectionView.extend({
  itemViewClass: Ember.View.extend({    
      click: function(){
        alert('hello')
       },   
    classNames: ['element','foobar'],
    templateName: 'foo'
  })
})

這是我的控制器:

調節器

App.ThreeController = Ember.ArrayController.extend({
content: [],
  init: function(){
    var me = this;
    $.each(test,function(k,v){
        var t = App.ThreeModel.create({
            name : v.name,
            town: v.town,
            type: v.type,
            number: v.number
        }) 
        me.addObject( t )
    })
    console.log( me.content )
  }
})

模板:

    <script type="text/x-handlebars" data-template-name="application">
        {{outlet}}
    </script>

    <script type="text/x-handlebars" data-template-name="three">
    </script>

    <script type="text/x-handlebars" data-template-name="foo">
        <div class="symbol"> {{ view.content.type }} </div>
        <div class="number"> {{ view.content.number }} </div>
        <div class="name"> {{ view.content.name }} </div>
        <div class="town"> {{ view.content.town }} </div>
    </script>  

我正在使用最新的Ember so ... V2路由器,該路由器將所有零件同步為“ Three”名稱。 如果我將數組直接放入視圖中,每個方法都將起作用:

App.ThreeView = Ember.CollectionView.extend({
  content: test, // manually added a pure array into view content
  itemViewClass: Ember.View.extend({    
      click: function(){
          alert('hello')
      },    
      classNames: ['element','foobar'],
      templateName: 'foo'
  })
})

但是,當我嘗試使用Ember.js對象“適當地”執行此操作時,沒有任何渲染視圖(除了空的應用程序視圖之外)。

我已經嘗試了變通方法,例如從視圖向控制器添加一個“ contentBinding”,只是看我是否可以強制連接,但仍然一無所獲。 在使用Three.js拾取呈現的內容並進行進一步操作時,請務必通過容器呈現視圖。

因此,總結一下:我可以在視圖中渲染純數組,但是沒有從控制器傳遞任何東西。 順便說一句,由於我可以在init上控制台記錄其內容,因此肯定是建立了控制器。 如果我更改視圖名稱,則不會實例化控制器,因此我知道命名空間正在工作。

提前致謝!

我不確定要解決整個問題,但是現在,當您在init()函數中定義控制器時,首先不要忘記調用this._super()(它將遍歷類層次結構並調用構造函數)。 也許那只是丟失的東西。

編輯:似乎與新的路由器,將視圖定義為CollectionView不起作用。 因此,我將其替換為普通的Ember.View,並在模板中使用了{each}幫助器。

<script type="text/x-handlebars" data-template-name="three">
  {{each controller itemViewClass="App.FooView" tagName="ul"}} 
</script>

這是一個最小的工作提琴: http : //jsfiddle.net/Sly7/qCdAY/14/

編輯2:

通過重新閱讀問題,並看到您嘗試將CollectionView內容的屬性綁定到控制器,我嘗試了它,因為它可以正常工作:)

http://jsfiddle.net/Sly7/qCdAY/15/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM