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!