一个简单的Angular / javascript问题:
我有一个使用两个函数的表单,一个是“点击”执行,另一个是“提交时”:
$scope.onclickevent = function(files) {
$scope.imageFile = files[0];
console.log($scope.imageFile);
}
$scope.onsubmitevent = function(){
console.log($scope.imageFile); // herein lies the problem
}
HTML是这样的:
<div class="file-field input-field ">
<input type="file" name="file" onchange="angular.element(this).scope().onclickevent(this.files)"/>
</div>
<a href="" class="btn" ng-click="onsubmitevent()">Create</a>
如何从其他函数访问$ scope.imageFile?在调用onsubmitevent时,$ scope.imageFile是“未定义的”。然而,第一个函数中的console.log将其显示为set。
$ rootscope是一个选项,但全局设置似乎是错误的。 将变量解析回html然后再回到第二个函数也似乎啰嗦和繁琐。
答案 0 :(得分:2)
如果您先拨打onclickevent
,则会将$scope.imageFile
设置为files[0]
,然后您可以onsubmitevent
通过$scope.imageFile
答案 1 :(得分:1)
调用onclickevent后它应该可以工作。
否则,你可以试试这个:
$scope.onclickevent = function(files) {
var imageFile = files[0];
$scope.imageFile = files[0];
console.log($scope.imageFile);
}
$scope.onsubmitevent = function(){
console.log(imageFile); // herein lies the problem
}
答案 2 :(得分:1)
您可以使用该服务
Angular Service To Set And Retrieve Object Between Controllers
像这样app.service('StoreService',function(){
var data1={};
var data2={};
this.save=function(data1,data2){
this.data1=data1;
this.data2=data2;
};
this.getData1=function(){
return data1;
};
this.getData2=function(){
return data2;
};
});
答案 3 :(得分:1)
尝试在两个函数之外初始化$ scope.imageFile,例如:
$scope.imageFile = [];
$scope.onclickevent = function(files) {
$scope.imageFile = files[0];
console.log($scope.imageFile);
}
$scope.onsubmitevent = function(){
console.log($scope.imageFile);
}
如果这不起作用,并且我不建议将其作为常规做法,请使用根范围变量,例如:
$rootScope.imageFile = [];
$scope.onclickevent = function(files) {
$rootScope.imageFile = files[0];
console.log($rootScope.imageFile);
}
$scope.onsubmitevent = function(){
console.log($rootScope.imageFile);
}
我想强调的是,使用rootcope变量并不是必需的;我只是在这里添加它来帮助您测试解决方案。
答案 4 :(得分:1)
你可以在你的函数之外定义$ scope.ImageFile
$scope.imageFile = [];
$scope.onclickevent = function(files) {
$scope.imageFile = files[0];
console.log($scope.imageFile);
}
$scope.onsubmitevent = function(){
console.log($scope.imageFile);
}