Tôi đang sử dụng Meteor và gặp sự cố khi nội dung của tôi được hiển thị lại khi tôi không muốn.Nội dung được bao bọc trong hiện tạiHiển thị lại người dùng khi người dùng cập nhật
Tôi có nội dung chính của mình được bao bọc trong tuyên bố currentUser
nếu tôi cảm thấy khá chuẩn.
{{#if currentUser}}
{{> content}}
{{/if}}
Vấn đề với mẫu nội dung của tôi đang được hiển thị lại khi tôi cập nhật đối tượng người dùng của mình. Có cách nào để khắc phục điều này? Tôi không tham chiếu đến người dùng ở bất kỳ đâu bên trong mẫu nội dung.
Cảm ơn bạn!
Dưới đây là một ứng dụng mẫu để tái tạo vấn đề của tôi:
HTML
<head>
<title>Render Test</title>
</head>
<body>
{{loginButtons}}
{{> userUpdate}}
{{#if currentUser}}
{{> content}}
{{/if}}
</body>
<template name="userUpdate">
<p>
<input id="updateUser" type="button" value="Update User Value" />
User last update: <span id="lastUpdated">{{lastUpdated}}</span>
</p>
</template>
<template name="content">
<p>Render count: <span id="renderCount"></span></p>
</template>
Javascript
if (Meteor.isClient) {
Meteor.startup(function() {
Session.set("contentRenderedCount", 0);
});
Template.content.rendered = function() {
var renderCount = Session.get("contentRenderedCount") + 1;
Session.set("contentRenderedCount", renderCount);
document.getElementById("renderCount").innerText = renderCount;
};
Template.userUpdate.events = {
"click #updateUser": function() {
Meteor.users.update({_id: Meteor.userId()}, {$set: {lastActive: new Date()}});
}
};
Template.userUpdate.lastUpdated = function() {
return Meteor.user().lastActive;
};
}
if (Meteor.isServer) {
Meteor.users.allow({
'update': function() {
return true;
}
});
}
Cập nhật: tôi nên đã giải thích ví dụ này một ít. Sau khi tạo người dùng, nhấp vào nút Cập nhật giá trị người dùng, khiến số lần hiển thị tăng lên. Điều này là bởi vì nó được bọc trong một {{#if currentUser}}
. Nếu điều này xảy ra nếu bị xóa, bạn sẽ thấy số lần hiển thị vẫn còn ở 1.
Ngoài ra, bạn sẽ cần thêm gói accounts-ui
và accounts-password
vào dự án của mình.
Đó làm việc hoàn hảo. Cảm ơn bạn! – Irving
@MurWade với động cơ Blaze mới giới thiệu với Meteor 0.8.3 một vài tháng trước. Bây giờ bạn có thể chỉ sử dụng '{{#if currentUser}} ... {{/ if}}' mà không có nội dung bên trong hiển thị lại – Akshat
Sử dụng {{pathFor route = 'dashboard'}} bên trong kiểm tra làm cho nó hiển thị lại , bất kỳ ý tưởng làm thế nào để vô hiệu hóa nó? – digz6666