javascript - 使用 Meteor 并输入复选框

标签 javascript html meteor

您好,我在检查复选框时遇到了问题。所以我想要做的是在单击该框时选中和取消选中。但是一旦我检查它,它就被卡住了,我不能再对它做任何事情了。这是相关代码!

import React, {Component} from 'react';

export default class ResolutionSingle extends Component {

  toggleChecked() {
    Meteor.call('toggleResolution', this.props.resolution._id, this.props.resolution.copmlete);
  }

  deleteResolution() {
    Meteor.call('deleteResolution', this.props.resolution._id);
  }

  render() {
    return (
      <li>
        <input type="checkbox"
               readOnly={true}
               checked={this.props.resolution.complete}
               onClick={this.toggleChecked.bind(this)} />
        {this.props.resolution.text}
        <button className="btn-cancel"
          onClick={this.deleteResolution.bind(this)}>
          &times;
        </button>
      </li>
    )
  }
}

方法如下

Meteor.methods({
  addResolution(resolution) {
    Resolutions.insert({
      text: resolution,
      complete: false,
      createAt: new Date()
    });
  },
  toggleResolution(id, status) {
    Resolutions.update(id, {
      $set: {complete: !status}
    });
  },
  deleteResolution(id) {
    Resolutions.remove(id);
  }
});

这是主要的包装

import React from 'react';
import ReactDOM from 'react-dom';
import TrackerReact from 'meteor/ultimatejs:tracker-react';

import ResolutionsForm from './ResolutionsForm.jsx';
import ResolutionSingle from './ResolutionSingle.jsx';


Resolutions = new Mongo.Collection("resolutions");

export default class ResolutionsWrapper extends TrackerReact(React.Component) {
  constructor(){
    super();

    this.state =  {
      subscription: {
        resolutions: Meteor.subscribe("allResolutions")
      }
    }
  }

  componentWillUnmount() {
    this.state.subscription.resolutions.stop();
  }

  resolutions() {
    return Resolutions.find().fetch();
  }

  render(){
    return (
      <div>
        <h1>My Resolutions</h1>
        <ResolutionsForm />
        <ul className="resolutions">
          {this.resolutions().map( (resolution)=>{
            return <ResolutionSingle key={resolution._id} resolution={resolution} />
          })}
        </ul>
      </div>
    )
  }
}

最佳答案

您的代码中有一个拼写错误。

Meteor.call('toggleResolution', this.props.resolution._id, this.props.resolution.copmlete);

它应该是完整而不是copmlete。为了避免以后出现类似的错误,您可以使用 check Meteor 方法中的函数。

关于javascript - 使用 Meteor 并输入复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37398428/

相关文章:

javascript - 转换不适用于 IE 浏览器中的 SVG

javascript - 单击 div 未打开模式

html - 图像高度是相对于文件大小而不是父 div(整页水平滚动画廊)

javascript - 如何从文档中检索与特定 ID 匹配的数组?

javascript - 从 jQuery 到 JavaScript 的转换

javascript - Node.JS 中的 ECMAScript 6 模块

javascript - jQuery 悬停几秒钟后停止工作?

javascript - 服务器在使用 Meteor + 不匹配的异步结果的 HTTP.call 上崩溃

javascript - 如何在jade中按条件包含模板代码?

javascript - 将 facebook javascript 函数存储在文件中并使用它们