トラッカーに関するチュートリアルに従っていますが、予期しない動作が見られます。
ここでは、getter と setter を使用して、setterTracker.autorun()
を呼び出すたびに呼び出されることを確認しています。
if (Meteor.isClient) {
var favoriteFood = 'Apples';
var favoriteFoodDep = new Tracker.Dependency;
var getFavoriteFood = function () {
favoriteFoodDep.depend();
return favoriteFood;
};
var setFavoriteFood = function (newValue) {
favoriteFood = newValue;
favoriteFoodDep.changed();
};
var handle = Tracker.autorun (function () {
console.log("your favorite food is " + getFavoriteFood());
});
setFavoriteFood("Mangos");
setFavoriteFood("Bananas");
setFavoriteFood("Cheese");
}
ブラウザ コンソールを開くと、
Your favorite food is Apples
Your favorite food is Mangos
Your favorite food is Bananas
Your favorite food is Cheese
しかし、何回呼び出しても、最初と最後のものだけが表示されsetFavoriteFood()
ます。
Your favorite food is Apples
Your favorite food is Cheese
なぜこうなった?