如何从父控制器引用子范围?

时间:2016-01-30 05:45:22

标签: javascript angularjs parse-platform

以下代码只显示一个表单,并使用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中的子项。

1 个答案:

答案 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