Rumah  >  Artikel  >  hujung hadapan web  >  Bolehkah Anda Memanggil Kaedah Meteor Terus daripada Pembantu Templat?

Bolehkah Anda Memanggil Kaedah Meteor Terus daripada Pembantu Templat?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 10:02:29308semak imbas

 Can You Call Meteor Methods Directly from Template Helpers?

Menggunakan Kaedah Meteor dalam Pembantu Templat

Dalam Meteor, pembantu templat menyediakan data reaktif kepada templat. Persoalan biasa timbul: bolehkah kita mengakses kaedah Meteor secara langsung dari dalam pembantu ini?

Pertimbangkan kod berikut:

<code class="javascrip">// server-side method
Meteor.methods({
  // viewTest method to return a string
  viewTest: function(str) {
    return str;
  }
});

// client-side helper
Template.helloWorld.helpers({
  // attempt to call 'viewTest' method
  txt: function() {
    return Meteor.call('viewTest', 'Hello World.');
  }
});</code>

Apabila cuba untuk membuat templat, fungsi pembantu menimbulkan ralat, menunjukkan bahawa kaedah itu tidak wujud. Ini kerana Meteor cuba untuk memaparkan templat sebelum mendaftarkan kaedah pada klien.

Pelaksanaan Alternatif

Terdapat pendekatan terkini dalam Meteor 0.9.3.1 yang menangani perkara ini isu:

<code class="javascript">// client-side template
Template.helloWorld.helpers({
  txt: function() {
    return Template.instance().myAsyncValue.get();
  }
});

// client-side 'created' callback
Template.helloWorld.created = function() {
  // create a ReactiveVar instance and attach it to the template
  this.myAsyncValue = new ReactiveVar("Waiting for response from server...");
  
  // call the 'getAsyncValue' method and update the ReactiveVar when the callback fires
  Meteor.call('getAsyncValue', (err, asyncValue) => {
    if (err) console.log(err);
    else this.myAsyncValue.set(asyncValue);
  });
};</code>

Penyelesaian ini menggunakan ReactiveVars, yang merupakan sumber data reaktif yang terikat pada tika templat. Dengan menyimpan hasil kaedah dalam ReactiveVar dan mengemas kininya dalam panggilan balik, pembantu boleh mengakses nilai yang dikembalikan secara reaktif.

Atas ialah kandungan terperinci Bolehkah Anda Memanggil Kaedah Meteor Terus daripada Pembantu Templat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn