簡體   English   中英

Meteor | 助手 function。 如何在 HTML 上打印返回元素的屬性值

[英]Meteor | Helper function. How to print attribute values of returned element on HTML

我正在使用 Meteor JS 進行項目的 UI 開發。 有一個輔助方法,它接受一個輸入參數並返回一個 object。

助手 Function:

"getPhoneName": function (param) {
        let myObj = PhoneRegister.findOne({"_id": param});
        //This myObj contains  name, _id, modelNumber
        return myObj;
    }

我如何在 HTML 上使用它

<span>{{getPhoneName 'id_1234'}}</span> //This line is obviously prints the [[Object]]

    Here i am not getting solution how to print modelNumber. I have tried following :
1.{{getPhoneName 'id_1234'.modelNumber}}
2.{{getPhoneName 'id_1234'}}.modelNumber

有人可以幫忙嗎? 如果您需要更多信息,請告訴我。

你提到你有這個助手 function:

getPhoneName (_id) {
  const myObj = PhoneRegister.findOne({_id});
  //This myObj contains  name, _id, modelNumber
  return myObj;
}

根據您的需要,go 有 2 種方法


首先,如果您只想獲取助手所暗示的“名稱” getPhoneName ,則可以改為return myObj.name; (還應考慮確保 myObj 存在的錯誤處理)。

然后你可以使用它:

<p>The name of the phone is {{getPhoneName phoneId}}</p>

但是,如果您改為在模板中列出有關手機的各種信息,您可以不理會幫助程序,並通過以下兩種不同方式之一調整您的模板:

1) 使用#let在您的模板中命名您的 object。

{{#let currentPhone=(getPhoneName phoneId)}}
  <ul>
    <li>ID: {{currentPhone._id}}</li>
    <li>Name: {{currentPhone.name}}</li>
  </ul>
{{/let}}

2) 使用#with將該 object 用作您的數據上下文而不分配名稱

{{#with getPhoneName phoneId}}
  <ul>
    <li>ID: {{_id}}</li>
    <li>Name: {{name}}</li>
  </ul>
{{/let}}

如果你只想要一個屬性,你可以簡單地return myObj.property; 並像使用{{getPhoneName 'id_1234'}}一樣顯示它。
但是如果你想訪問多個屬性,你可以在一個數組中返回 object,然后使用每個每個Blaze 的內置塊,如下所示:

幫手:

"getPhoneName": function (param) {
        let myObj = PhoneRegister.findOne({"_id": param});
        //This myObj contains  name, _id, modelNumber
        return [myObj];  // Returning an array in order to use each or each-in
    }

HTML(每個):

{{#each getPhoneName 'id_1234'}}
    <span>{{this.property1}}</span>
    <span>{{this.property2}}</span>
{{/each}

你也可以看看{{#let}} ,在某些情況下它也很有用。

暫無
暫無

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

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