Bolehkah Anda Memanggil Kaedah Meteor Terus daripada Pembantu Templat?

Linda Hamilton
Lepaskan: 2024-10-28 10:02:29
asal
389 orang telah melayarinya

 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan