以下代码只显示一个表单,并使用editDownload
方法保存输入:
JS:
$scope.editDownload = function(downloadId) {
var Download = Parse.Object.extend('Download')
var download = new Download()
var data = {
'title': $scope.download.title,
'link': $scope.download.link
}
download.save(data, {
success: function(result) {
console.log('Success:', result.toJSON())
},
error: function(result, error) {
alert('Error:', error.message)
}
})
}
HTML:
<ul class="text-center no-bullet">
<li ng-repeat="download in downloads">
<form>
<input type="text" class="form-control" ng-model="download.title">
<input type="text" class="form-control" ng-model="download.link">
<button type="button" class="btn btn-primary" ng-click="editDownload('{{download.objectId}}')">Submit</button>
</form>
</li>
</ul>
但是有一个问题,$scope.download.title
和$scope.download
变为undefined
,因为它们的值设置在ng-repeat
内,因此在不同的范围内。
如何从父控制器引用此“子”范围?
注意:我无法在模板中执行$parent.download.title
和$parent.download.link
,因为ng-model
不会显示任何内容(它不会显示再次引用ng-repeat中的子项。
答案 0 :(得分:0)
您不必通过表达式将参数传递给editDownload()
。您只需传递editDownload(download.objectId)
。
生成的按钮标记如下所示:
<button type="button" class="btn btn-primary" ng-click="editDownload(download.objectId)">Submit</button>
此外,$scope.download
未引用ng-repeat中的download
。
如果您想对通过download
的{{1}}对象执行某些操作,则可以将对象本身作为参数传递。
editDownload()
而不是将editDownload(download)
作为参数传递。
最后,它应该是这样的:
download.objectId