Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor.js排行榜示例,如何反应性地更改按钮值?_Meteor_Reactive Programming_Leaderboard - Fatal编程技术网

Meteor.js排行榜示例,如何反应性地更改按钮值?

Meteor.js排行榜示例,如何反应性地更改按钮值?,meteor,reactive-programming,leaderboard,Meteor,Reactive Programming,Leaderboard,我尝试使用排行榜示例,添加了一个按钮来切换按姓名/分数排序 我成功地添加了事件,但我还想更改按钮上的文本值 我希望添加的按钮文本值(按名称/分数排序)得到反应性更新(每次我单击按钮时),但是它没有这样做,仅在手动单击播放器项目时得到更新 新增代码: leadboard.html(排行榜模板): 谢谢 B.R Ian这与保存输入包有关。来自Meteor文档: 默认情况下,新的Meteor应用程序会自动包含preserve inputs包。这将保留具有唯一id属性或在具有id属性的封闭元素中具有唯一

我尝试使用排行榜示例,添加了一个按钮来切换按姓名/分数排序

我成功地添加了事件,但我还想更改按钮上的文本值

我希望添加的按钮文本值(按名称/分数排序)得到反应性更新(每次我单击按钮时),但是它没有这样做,仅在手动单击播放器项目时得到更新

新增代码:

leadboard.html(排行榜模板):

谢谢

B.R


Ian

这与
保存输入
包有关。来自Meteor文档:

默认情况下,新的Meteor应用程序会自动包含preserve inputs包。这将保留具有唯一id属性或在具有id属性的封闭元素中具有唯一名称属性的input、textarea、button、select和option类型的所有元素。要关闭此默认行为,只需删除preserveinputs包

因此,基本上是因为您的按钮有一个
名称
属性,Meteor防止在重新渲染模板时更改它。有三种方法可以解决此问题:

  • 只需从
    input.sort
    属性中删除
    name
    属性即可

  • 删除
    preserve inputs
    软件包(如果您使用的是当前模板引擎,则不建议这样做)

  • 您可以使用新Meteor模板引擎的预览版,它不再需要
    preserve inputs
    包,因为它会自动执行更细粒度的DOM更新。您可以使用以下方法在预览版本中运行应用程序一次:

    meteor --release shark-1-29-2014-e
    
    或者,您可以让Meteor通过运行以下命令将您的应用程序更新到此版本:

    meteor update --release shark-1-29-2014-e
    
    请注意,这个新的模板引擎将包含在Meteor core 1.0版中


  • 你能发布你的HTML模板,你的助手函数和你的按钮事件处理程序吗?您的JavaScript函数看起来很好,但很难判断,因为代码在部署时都被缩小了。在v0.8上,现在使用blaze,似乎不再工作了,尽管blaze声称它应该以更精细的粒度更新DOM?
    meteor --release shark-1-29-2014-e
    
    meteor update --release shark-1-29-2014-e