角度过滤

时间:2016-02-24 21:37:06

标签: javascript angularjs

我在mongoDB中有这个架构:

var CostSchema = new Schema({
    item: String,
    value: Number
});

var AttachmentsSchema = new Schema({
    item: String,
    url: String
})

var ServiceSchema = new Schema({
    item: String, // maybe another Schema [] to be able to search for this criteria
    description:String,
    worker: { type: Schema.Types.ObjectId, ref:'Worker'}, //Saves Worker ID 
    date_assigned: Date,
    price:Number
});

var JobsSchema = new Schema({ 
    manager: { type: Schema.Types.ObjectId, ref:'Admin', required:true}, // Saves Manager Name       
    propertie: { type: Schema.Types.ObjectId, ref: 'Propertie', required:true}, //Saves Property Name 
    unit: String,
    completed: Boolean,
    costs: [CostSchema],
    services:[ServiceSchema], 
    totalPrice: Number,
    totalCost:Number,
    poNumber: { type : String, unique: true, sparse:true },
    invoiceNumber: { type : String, unique: true, sparse:true },
    notes: String,
    date_completed: Date,
    attachments: [AttachmentsSchema],
    notification_sent: Boolean
});

因此,根据作业,它将有一个完整的日期,我试图在前端应用以下过滤器

<div class="page-header col-xs-12">
  <h3 class ='text-center'>Pending Jobs</h3> 
  <div class="form-group col-xs-8 col-xs-offset-2 text-center">
    <label for="searchJobBox1">Filter</label>
    <input ng-model = 'job.$' type="text" class="form-control" id="searchJobBox1" placeholder="Quick Filter...">
  </div>
  <div class="form-group col-xs-2 col-xs-offset-3 text-center">
    <label for="jobPropertyFilter" class="col-xs-2 control-label">Property</label>
    <div>
      <select ng-model = 'job.propertie._id' class="form-control" id='jobPropertyFilter'>
        <option></option>
        <option  value = '{{property._id}}' ng-repeat ='property in properties'>
        {{property.name}}
        </option>
      </select>
    </div>
  </div>
  <div class="form-group col-xs-2 text-center">
    <label for="jobWorkerFilter" class="col-xs-2 control-label">Worker</label>
    <div>
      <select ng-model = 'job.services.worker._id' class="form-control" id='jobWorkerFilter'>
        <option></option>
        <option  value = '{{worker._id}}' ng-repeat ='worker in workers'>
        {{worker.first}} {{worker.last}}
        </option>
      </select>
    </div>
  </div>
  <div class="form-group col-xs-2 text-center">
    <label for="jobManagerFilter" class="col-xs-2 control-label">Manager</label>
    <div>
      <select ng-model = 'job.manager._id' class="form-control" id='jobManagerFilter'>
        <option></option>
        <option  value = '{{admin._id}}' ng-repeat ='admin in admins'>
        {{admin.first}} {{admin.last}}
        </option>
      </select>
    </div>
  </div>
</div>

我有两个ng-repeats,如下所示: 1)工作正常

<div class="panel panel-default" ng-repeat = 'job in jobs| filter:job:strict' ng-if='!job.date_completed' >

2)

 <div class="panel panel-default" ng-repeat = 'job in jobs| filter:job:strict' ng-if='job.date_completed' >

由于某些原因我无法弄清楚,Angular会将过滤器应用于具有date_completed属性的每个作业,并且它们没有显示它与ng-if没有任何关系,这是工作得很好。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在您的第二个示例中ng-if仅在定义job.date_completed时显示该元素。

我只能认为job.date_completed*undefined*

尝试使用console.log打印job.date_completed

的值
相关问题