gpt4 book ai didi

angularjs - 为什么上传文件对 ion-content 不起作用?如果我去除 ion-content ,就可以工作

转载 作者:行者123 更新时间:2023-12-04 03:16:12 27 4
gpt4 key购买 nike

我是ionic的新手,我想上传图片,因此我使用“ng-file-upload”上传我的图片。
但代码仅在我删除“ ion-content ”时才起作用。我的模板是:

    <ion-view view-title="IQ Marketplace" ng-controller="SellCtrl">
<ion-content class="padding" >
<div class="list">
<form ng-submit="submitAds()" name="form" novalidate>


<label class="item item-input">
<span class="input-label">Picture</span>
<input type="file" ngf-select ng-model="file" name="file" ngf-pattern="'image/*'"
accept="image/*" >
</label>
<input type="submit" class="button button-block button-positive" value="Save" ng-disabled="form.$invalid">
</form>

</div><!--list-->

</ion-content>
</ion-view>

我的 Controller 是:
.controller('SellCtrl', function($scope,Upload) {

$scope.submitAds = function() {
console.log("ayman "+ $scope.file)
$scope.upload($scope.file);
};
$scope.upload = function (file) {
Upload.upload({
url: 'http://localhost/IQM/public/ads',
data: {file: file, 'username': $scope.test}
}).then(function (resp) {
console.log('Success ' + resp.config.data.file.name + 'uploaded. Response: ' + resp.data);
}, function (resp) {
console.log('Error status: ' + resp.status);
}, function (evt) {
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name);
});
};
});

这段代码给了我这个异常(exception):
   TypeError: Cannot read property 'name' of undefined
at controllers.js:84
at ionic.bundle.js:23476
at Scope.$eval (ionic.bundle.js:24673)
at Scope.$digest (ionic.bundle.js:24484)
at ionic.bundle.js:24712
at completeOutstandingRequest (ionic.bundle.js:14221)
at ionic.bundle.js:14493

但是当我删除“ ionic 内容”时,上传会成功。
问题是什么?

最佳答案

我猜你已经介绍了 Ionic Framework .

这显然是 angular 的 scope问题。

您定义了一个 ng-model="file"ion-content .虽然 ion-content创建一个新的 scope ,因此您无法检索变量 file直接地。

请引用doc ,它说:

Be aware that this directive gets its own child scope.



您可以使用 dot notations喜欢:
// controller
$scope.data = {}

// html
<ion-content class="padding" >
...
<input ng-model="data.file" />
...
</ion-content>

然后你可以通过 $scope.data.file得到值.

根本原因是关于 AngularJS 的 scope概念。

您可以阅读这些文章以获取更多信息。
  • http://forum.ionicframework.com/t/problem-with-ion-content-and-scope-vars-inside-function/1811
  • https://github.com/angular/angular.js/wiki/Understanding-Scopes
  • 关于angularjs - 为什么上传文件对 ion-content 不起作用?如果我去除 ion-content ,就可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33386424/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com