4

我有一个标准模板,它使用集合中的反应元素列表执行 {{#each}}。

我遇到的问题是,我想在集合中更新特定元素时对其进行字体属性更改,只是为了提请注意它已更新的事实。

我一直无法找到一种好的/优雅的方式来做到这一点。谁能指出我正确的方向?谢谢!

4

2 回答 2

2

您可能想检查光标观察,当某些文档更新或更改时,您可以执行任何操作,例如调用事件。

li#model-1273927381273 model-1273927381273

Modal.find().observe
    changed: (newDocument, oldDocument) ->
        ($ '#model-'+ newDocument._id).action()

http://docs.meteor.com/#observe

i use similar code currently but dont know how to prevent init documents load.
于 2013-03-14T03:34:00.153 回答
0

与您的问题类似,每当特定会话变量(GPS 位置)发生变化时,我都想“刷新”一个 div。我的解决方案如下。

在 /client/main.js 中:

Session.setDefault('lat', 0);
Session.setDefault('lng', 0);
Session.setDefault('locationChange', 1);

和:

Meteor.setInterval(function() {
    getLocation();

}, 5000); 

function getLocation() {
    Location.locate(function(pos){
        var oldLat = Session.get("lat");
        var oldLng = Session.get("lng");

        Session.set('lat', pos.latitude);
        Session.set('lng', pos.longitude);

        if (oldLat != Session.get("lat") || oldLng != Session.get("lng"))
            Session.set("locationChange", -1 * Session.get("locationChange"));

    }, function(err){
        console.log("Location not obtained: ", err);
    });     
}

在模板中,比如 /client/templates/someTemplate.html,我想提醒用户注意更改:

<span class="glyphicon glyphicon-screenshot" aria-hidden="true" data-locationChange='{{locationChange}}'></span>

在关联的 javascript 文件中,例如 /client/templates/someTemplate.js:

Template.appBody.helpers({
    locationChange: function() {
        $("#locationIcon").fadeOut(100).fadeIn(100);

        return Session.get("locationChange");
    },    
});

所以,现在,只要 GPS 坐标发生变化(不一定是在刷新时),'locationChange' 的值就会从 1 翻转到 -1,反之亦然。这会触发 'locationChange' 帮助器,它会更新(无意义的)属性 'data-locationChange',但也会触发一些 jQuery 脚本来闪烁模板中的 span。

于 2015-10-21T13:45:30.023 回答