【问题标题】:Meteor, display/sort value by boolean流星,按布尔值显示/排序值
【发布时间】:2016-02-20 10:53:23
【问题描述】:

我正在处理 Meteor 模板中的一个表,其中是一个布尔字段“emergency” 我想先在表格中显示有“紧急”标志的单元格,然后是其他的...

请问我该怎么做?

这里是find,我尝试了sort(),在里面找到并排序但是它不起作用..:/

Template.actionsList.helpers({
    actions: function() {
        return Actions.find();
    }
});

提前致谢:)


我收到错误:模板助手中的异常:TypeError:无法读取 null 的属性“hasOwnProperty”

我的代码是:

Session.set('emergency', false);
Template.actionForm.onRendered(function () {
    var $elem = this.$('.emergency');
    $elem.checkbox('set ' + (Session.get('emergency') ? 'checked' : 'unchecked'));
    $elem.checkbox({
            onChange: function () {
              Session.set('emergency', !Session.get('emergency'));
            }
    });
});

Template.actionForm.events({
    'submit .new-action': function(event) {
        event.preventDefault();

        var emergency = Session.get('emergency');
    ...
       Actions.insert({
        emergency: emergency
    ....

感谢您的帮助

【问题讨论】:

  • 抱歉没有编辑帖子...

标签: javascript mongodb meteor collections semantic-ui


【解决方案1】:

使用下划线的 sortBy() 方法对对象进行排序,通过 hasOwnProperty() 原生方法检查“紧急”字段是否存在:

Template.actionsList.helpers({
    actions: function() {
        var actions = Actions.find().fetch();
        return _.sortBy(actions, function (a) { return !a.hasOwnProperty('emergency'); });
    }
});

查看下面的演示。

var actions = [
	{
		"_id" : "ukn9MLo3hRYEpCCty",    
		"field" : "foo"
	},
	{
		"_id" : "ukn9MLo3hRYEpCCty",    
		"field" : "bar",
		"emergency": true
	},
	{
		"_id" : "WMHWxeymY4ATWLXjz",    
		"field" : "abc",
		"emergency": false
	},
	{
		"_id" : "5SXRXraariyhRQACe",    
		"field" : "xyz"			
	}
];

var result = _.sortBy(actions, function (a) { return !a.hasOwnProperty('emergency'); });

pre.innerHTML = JSON.stringify(result, undefined, 4);
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>
<pre id="pre"></pre>

【讨论】:

  • 您好,感谢您的回答。它不起作用,我收到一条消息:模板助手中的异常:TypeError:无法读取 null 的属性“hasOwnProperty”。当我记录我的结果文件时,这真的很奇怪,它是假的还是真的,所以布尔值......我在一个答案帖子上写代码。
  • @chridam Actions.find(); 返回游标而不是数组。请改用Actions.find().fetch();
  • @MatthiasEckhart 谢谢!
  • @chridam:谢谢,但不起作用。我理解您的代码并将其影响到我的代码,但它似乎没有做任何事情......:/当我显示我的提取结果时,我会显示所有字段,就像排序没有做任何事情一样......(所以按创建顺序)我回答问题以显示更多代码。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-06
  • 2023-03-11
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多