2014-07-26 86 views
0

我想實現xwidgets(一個自動窗體擴展到不喜歡的東西自動完成)流星xwidgets收集未定義

它不起作用,因爲它假裝收集得到的自動完成值是不確定的。

我不明白爲什麼它是未定義的。

這是我有:

@Contacts = new Meteor.Collection("contacts") 
@Tenants = new Meteor.Collection("tenants") 

這是我的表單模板:

template(name="newTenant") 
    #newTenant.hidden 
     .animated.fadeIn 
      h4 Add a new tenant for this space 
       .space-12 
       +autoForm(collection="Tenants" id="insertTenantForm" type="insert") 
        fieldset 
         +afFieldInput(name="contact_id" references="contacts.lastname" call="contacts" template="tags") 
         +afQuickField name="rent" 
         +afQuickField name="costs" 
         +afQuickField name="entry_date" class="datepicker duration" 
         +afQuickField name="contract_duration" class="duration" 
         +afQuickField name="exit_date" class="datepicker" 
         +afQuickField name="contract_type" options="allowed" 
        .btn-group 
         button(type="submit" id="createTenant" class="btn btn-default") Submit 
         a(href="#" id="cancelNewTenant" class="btn btn-danger") Cancel 
      +contentFor "modal" 
       +newContact 
      each contacts 
       .editable(_id="{{_id}}") {{_id}} 

,這些都是我的助手:

Template.newTenant.helpers 
    space_id: -> Router.current().params._id 
    contacts: -> Contacts.find() 

租戶在鐵路由器定義。出版物沒問題。 接觸是正確定義(這是在每個塊瀏覽)

,但我得到的KEYUP以下錯誤信息:

Exception in delivering result of invoking 'contacts': TypeError: Cannot read property 'length' of undefined 
    at http://localhost:3000/packages/xwidgets.js?0ba0b616c9af16bc49b0ad59d8e950507492d9e0:629:41 
    at null._callback (http://localhost:3000/packages/meteor.js?439f867e12888606900664d4463e1b3ee3644e44:818:22) 
    at _.extend._maybeInvokeCallback (http://localhost:3000/packages/livedata.js?f42db198bc25553e9f50ea290229c73093a576b3:3782:12) 
    at _.extend.dataVisible (http://localhost:3000/packages/livedata.js?f42db198bc25553e9f50ea290229c73093a576b3:3811:10) 
    at http://localhost:3000/packages/livedata.js?f42db198bc25553e9f50ea290229c73093a576b3:4575:7 
    at Array.forEach (native) 
    at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:156:11) 
    at _.extend._runAfterUpdateCallbacks (http://localhost:3000/packages/livedata.js?f42db198bc25553e9f50ea290229c73093a576b3:4574:7) 
    at _.extend._livedata_data (http://localhost:3000/packages/livedata.js?f42db198bc25553e9f50ea290229c73093a576b3:4564:10) 
    at onMessage (http://localhost:3000/packages/livedata.js?f42db198bc25553e9f50ea290229c73093a576b3:3643:12) 

我想這是數據上下文範圍的問題,但我不知道在哪裏它來自。

謝謝!

回答

0

我不確定,但初看來我認爲references="contacts.lastname"應該是references="Contacts.lastname"

但是可以肯定的是,我可以擁有應用程序的克隆嗎?謝謝。

  • ○ - ○ - O - 編輯:

我已經寫了下面的代碼(在Template.xautocomplete.helpersitems)的

for item, i in (result or []) 

代替:

for item, i in result 

我認爲這是錯誤的責任。讓我知道這是否能解決問題。

  • ○ - ○ - O - EDIT2:

對不起,我認爲這是無據可查。您必須爲自動填充數據填充名爲「名稱」的字段。下面是服務器方法的一個例子:

Meteor.methods 
    items: (query)-> 
     items.find(name: {$regex: '^.*'+query+'.*$'}).fetch() 

,並在自動完成的代碼,它使用的數據的下一方式:

for item, i in (result or []) 
    local_items.insert({name: item.name, index: i, remote_id: item._id}) 

如果沒有您的收藏在一個字段的名字「 ,你可以這樣做:

Meteor.methods 
    items: -> 
     ({name: x.field} for x in items.find({})) 

我認爲這是問題所在。

PD:現在我不在家,沒有良好的Skype連接。如果問題沒有解決,我們可以做到。

+0

它沒有幫助。這裏有一個應用程序的github倉庫:https://github.com/ndemoreau/immo。這裏提到的頁面是在客戶端/視圖/租戶/ new_tenant.jade /咖啡。謝謝! – ndemoreau

+0

現在我的應用程序正在運行。你能告訴我如何達成失敗嗎? (另外,我可以在文件new_tenant.html中看到_references =「contacts.lastname」_而不是_Contacts.lastname_ –

+0

它在new_tenant.jade中。new_tenant.html試圖查看問題是否來自玉器。 – ndemoreau