在parse.com成功保存时动态更新ng-repeat行
Dynamically update ng-repeat rows on successful parse.com save
我有这个AngularJS
控制器
app.controller('dataCtrl', function($scope) {
function getData() {
var myData = Parse.Object.extend('myData');
var query = new Parse.Query(myData);
query.find({
success: function(results) {
$scope.$apply(function() {
$scope.resultData = results.map(function(obj) {
return {
startDate: obj.get('StartDate'),
endDate: obj.get('EndDate'),
investment: obj.get('Investment'),
format: obj.get('Format'),
partner: obj.get('Partner'),
purpose: obj.get('Purpose')
}
});
});
}
});
}
getData();
$scope.refreshData = function() {
getData();
}
$scope.submit = function() { {
var myData = Parse.Object.extend('myData');
var formData = new myData();
formData.save({
StartDate: $scope.startDate,
EndDate: $scope.endDate,
Investment: parseInt($scope.investment),
Format: $scope.format,
Partner: $scope.partner,
Purpose: $scope.purpose
}, {
success: function(formData) {
console.log('Success');
}
})
}
});
伴随<form ng-submit="submit()">
和
<tr ng-repeat="x in resultData">
<td>{{x.startDate | date: 'yyyy-MM-dd'}}</td>
<td>{{x.endDate | date: 'yyyy-MM-dd'}}</td>
<td>{{x.investment}}</td>
<td>{{x.format}}</td>
<td>{{x.partner}}</td>
<td>{{x.purpose}}</td>
</tr>
我可以通过调用refreshData()
函数的按钮手动成功加载新数据。但是,我希望视图在成功提交表单时使用新创建的行更新ng-repeat
。我该怎么做呢?
您可以保存数据并在保存时获得响应对象。你必须把响应对象放到模型resultData
中您的响应数据将放在formData下。
success: function(formData) {
$scope.resultData=formData;
console.log('Success');
}
当您从api获得成功响应时,您可以将数据对象添加到ng-repeat列表中。它将在你的ng-repeat列表中呈现新添加的对象。
用于在顶部添加已添加的对象:
jQuery.merge([existed list], {new object});
它会达到你的目的。
使用array .push()将任何内容放入数组。
var a=[], b={};
a.push(b);
// a[0] === b;
关于数组的额外信息
一次添加多个条目
var x = ['a'];
x.push('b', 'c');
// x = ['a', 'b', 'c']
在数组开头添加元素
var x = ['c', 'd'];
x.unshift('a', 'b');
// x = ['a', 'b', 'c', 'd']
将一个数组的内容添加到另一个数组
var x = ['a', 'b', 'c'];
var y = ['d', 'e', 'f'];
x.push.apply(x, y);
// x = ['a', 'b', 'c', 'd', 'e', 'f']
// y = ['d', 'e', 'f'] (remains unchanged)
从两个数组的内容创建一个新的数组
var x = ['a', 'b', 'c'];
var y = ['d', 'e', 'f'];
var z = x.concat(y);
// x = ['a', 'b', 'c'] (remains unchanged)
// y = ['d', 'e', 'f'] (remains unchanged)
// z = ['a', 'b', 'c', 'd', 'e', 'f']
希望对你有帮助。
引用自:如何将对象添加到数组
您必须将新的行对象附加到resultData
。
对象keys
似乎不匹配之间的AngularJS范围对象模型和解析对象模型。创建Adaptor方法将使此任务更容易。
function createMyDataObjectFromParseObject(parseObject){
return {
startDate: parseObject.get('StartDate'),
endDate: parseObject.get('EndDate'),
investment: parseObject.get('Investment'),
format: parseObject.get('Format'),
partner: parseObject.get('Partner'),
purpose: parseObject.get('Purpose')
};
}
在both success方法中使用,
数据获取调用应该是这样的,
query.find({
success: function(results) {
$scope.$apply(function() {
$scope.resultData = results.map(function(obj) {
return createMyDataObjectFromParseObject(obj);
});
});
}
});
新行创建应该像这样,
$scope.submit = function() { {
var myData = Parse.Object.extend('myData');
var formData = new myData();
formData.save({
StartDate: $scope.startDate,
EndDate: $scope.endDate,
Investment: parseInt($scope.investment),
Format: $scope.format,
Partner: $scope.partner,
Purpose: $scope.purpose
}, {
success: function(newParseObject) {
var newObj = createMyDataObjectFromParseObject(newParseObject);
$scope.resultData.push(newObj)
}
})
}
相关文章:
- d3基于用户选择动态更新节点
- 如何从相应的控制器动态更新标题和描述
- 根据CHECKBOX输入值动态更新DIV信息
- HTML动态更新滑块输入
- 如何使用ajax和jquery动态更新数组表
- 如何动态更新输入值属性
- 动态更新chartJ中的图表
- 动态更新Angular2指令中自定义属性的值
- jQuery动态更新数据键和值
- 如何在jQuery的.on()方法中动态更新按钮的ID选择器
- 使用 php/jquery 动态更新单个模态
- 在 Ionic 中动态更新滚动区域
- 具有动态更新的实时标题 (AJAX+jQuery)
- jQuery:动态更新 N 个最新值的列表
- 如何动态更新选择值
- 将URL路径与<a>attr('href')来动态更新.active类
- Jquery调整大小动态更新
- 在javascript中动态更新嵌套对象
- javascript中的文本框未正确动态更新
- 动态更新Ace Editor+Requirejs的语法高亮显示