当使用生成器启动一个新的meanjs项目(mongoose,angular等)并添加一个CRUD模块时,我得到这样的方法:
$scope.findOne = function() {
$scope.income = Incomes.get({
incomeId: $stateParams.incomeId
});
在我的收入服务器模型如下所示,它在这些属性上有一些不同的属性和一些不同的对象类型,例如,数字,日期和字符串。
当我在promise" $ scope.findOne"之后我的$ scope.income中获取数据时已经成功我的所有数据都是字符串。我需要将它们中的每一个都投射到合适的类型吗?
在我的前端,我想在我的"更新"的输入元素中呈现不同的类型。视图。例如:
<label class="control-label" for="date">Date of transaction</label>
<div class="list-group-item">
<div class="controls">
<input type="date" data-ng-model="income.date" id="date" class="form-control" placeholder="Date" required>
</div>
这不起作用,因为对象$ scope.income.date由一个字符串组成。将输入类型更改为字符串会使其显示。但我想在这里使用日期选择器。
我应该写一些类似的东西:
$scope.findOne = function() {
Incomes.get({
incomeId: $stateParams.incomeId
}).then(function(data){
var dateVar=new Date(data.date);
var amountVar =Number(data.amount)
$scope.income ={date: dateVar, name: data.name, amount:amountVar}()
);
这里的最佳做法是什么?
我正在使用的模型:
'use strict';
/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Income Schema
*/
var IncomeSchema = new Schema({
name: {
type: String,
default: '',
required: 'Please fill Income name',
trim: true
},
amount: {
type: String,
default: '',
required: 'Please fill Income amount',
trim: true
},
date: {
type: Date,
default: '',
required: 'Please fill Income date',
trim: true
},
monthly: {
type: Boolean,
default: '',
required: 'Please fill whether income is recurring monthly',
trim: true
},
yearly: {
type: Boolean,
default: '',
required: 'Please fill whether income is recurring yearly',
trim: true
},
account: {
type: Schema.ObjectId,
ref: 'Account',
required: 'Please select account'
},
created: {
type: Date,
default: Date.now
},
user: {
type: Schema.ObjectId,
ref: 'User'
}
});
mongoose.model('Income', IncomeSchema);
答案 0 :(得分:0)
首先,我必须掌握这一承诺,而不是我可以从Incomes.get响应中轻松构建更复杂的对象。数据作为JSON通过网络发送,因此它只是文本,因此我需要使用f ex将其实例化为正确的类型。日期和号码:
Incomes.get({
incomeId: $stateParams.incomeId
}).$promise.then(function(data){
var dateVar=new Date(data.date);
var amountVar =Number(data.amount)
$scope.income ={date: dateVar, name: data.name, amount:amountVar}()
);
答案 1 :(得分:0)
为了使资源函数能够正常删除工作,需要使用“this”,不要忘记promise在另一个命名空间中,因此需要“that = this”。
var that=this;
Incomes.get({
incomeId: $stateParams.incomeId
}).$promise.then(function(income){
income.date= new Date(income.date);
var recurringVar;
if(income.monthly===true){
recurringVar = 'monthly';
} else if( income.yearly===true){
recurringVar = 'yearly';
}
income.recurring=recurringVar;
that.income=income;
});