2016-09-23 6 views
1

Dies ist mein Meteor Vorlage:DOM Zugriff von Meteor Vorlagen js

{{#each p}} 
<div class="cpl"> 
<div class="chat-post"> 
    <li class="post"> 
     <div class="nm" id={{_id}}> 
      <a>{{username}}</a> 
     </div> 
     <div class="con">{{content}}</div> 
     <div class="cnm"> 
      <div class="t">{{time}}</div> 
      <div class="m" id="cm"> 
       <a>message </a> 
      </div> 
     </div> 
    </li> 
</div></div> 
{{/each}} 

// TEMPLATE FÜR PF

<template name="pf"> 
    <form id="post-box"> 
    <textarea id="new" required></textarea> 
    <button type="submit">Post</button> 
    </form> 
    </template> 

// THIS IST MEINE HELFER UND EREIGNIS Behandlungsroutinen für PF und PC, Kollektionsnamen ROST

Template.pc.helpers({ 
    p: function(){ 
    return Rost.find({}, {sort:{created:-1}}); 
    } 
}); 



Template.pf.events({ 
    'submit form': function(event){ 
    event.preventDefault(); 
    var content= document.getElementById('new').value; 


var date= new Date(), 
h=(date.getHours()<10?'0':'') +date.getHours(), 
m=(date.getMinutes()<10?'0':'')+date.getMinutes(); 
var time=h+':'+m; 
var username= Meteor.user().username; 
    Rost.insert({ 
     content: content, 
     created:date, 
     time:time, 
     username: username 
    }); 
    event.target.reset(); 
    } 
}); 

Ich bin mit Meteor und Mongo als DB, wo {{username}}, {{content}} und {{time}} Variablen des Objekts sind. Wie kann ich mit JavaScript auf {{username}} zugreifen?

+0

Sie haben viele Möglichkeiten, das zu tun. Willst du nur den Wert von Benutzername? Der DOM-Knoten? In Meteor Weg? Jquery Weg? Vanille js? –

+0

Ich möchte den Wert n dom Knoten –

Antwort

0

Innerhalb Ihrer Hilfsfunktion sollten Sie bereits Zugriff auf diese Daten über die Variable dieses Kontext oder Template.instance(). Data haben. Ihre Event-Handler sollte wie folgt aussehen:

'click cssSelector'(event,instance) { 
    event.preventDefault(); 
} 

Wie Sie sehen können, der zweite Parameter die Vorlageninstanz ist, so haben Sie Zugriff auf die Daten mit instance.data, oder Sie verwenden event.currentTarget das Element, um festzustellen, dass war klicken und von dort gehen. Bitte posten Sie Ihre Helfer oder den Code für die Ereignisbehandlung, damit wir sehen können, was Sie versuchen und Probleme damit haben.

+0

Template.pc.helpers ({ p: function() {return Rost.find ({}, {Sortieren: {erstellt: -1}}); } }); Template.pf.events ({ 'einreichen Form'. Funktion (event) { Event.preventDefault(); var content = document.getElementById ('neuen') Wert; var date = new Date (), h = (date.getHours() <10? '0': '') + date.getHours(), m = (date.getMinutes() <10? '0': '') + Datum. getMinutes(); var time = h + ':' + m; var username = Meteor.user() Benutzernamen; Rost.insert ({ Inhalt:. Inhalt, erstellt: Datum, Zeit: Zeit, Benutzername : Benutzername }); event.target.reset(); } }); –

+0

Ich kann nicht sehen, was Sie versuchen zu tun. Wenn Sie auf den Benutzernamen von der PC-Vorlage klicken, weiß ich nicht, was Sie mit der PF-Vorlage tun möchten. Wie auch immer, um den Benutzernamen aus der pc Vorlage zu lesen: 'Template.pc.events ({'click .nm a' (Ereignis, Vorlage) {event.preventDefault(); alert ($. Trim ($ (event.currentTarget) .text()));}}) '. Bitte prüfe. – Khai

+0

es ist eine Gruppen-Chat-Anwendung .... Ich brauchte den Wert der {{username}} von pc Vorlage, so dass ich 'Nachricht' Link für den aktuellen Benutzer [man kann es nicht selbst Mitteilung] entfernen und die Beiträge zu machen der aktuelle Benutzer auf der anderen Seite zu floaten ......... dafür muss ich den Wert {{username}} n bekommen, dann muss ich das vergleichen, wenn username == aktueller Benutzer ..dann die Sichtbarkeit ändern der Link "Nachricht" zu versteckt und machen Sie diesen Beitrag auf der anderen Seite schwimmen –