Javascript 更改视图AngularJS时,控制器中的我的数据列表为空
我不明白为什么,但在Angular controller中我有一个列表,如果我成功保存了文件,我想转到另一个页面,那里会显示我保存的文件列表。我把名字放在列表中,一切正常,但当我更改html/根目录时,他们可能会删除所有列表。我对两个html页面使用相同的控制器 控制器:Javascript 更改视图AngularJS时,控制器中的我的数据列表为空,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,我不明白为什么,但在Angular controller中我有一个列表,如果我成功保存了文件,我想转到另一个页面,那里会显示我保存的文件列表。我把名字放在列表中,一切正常,但当我更改html/根目录时,他们可能会删除所有列表。我对两个html页面使用相同的控制器 控制器: $scope.imenaFajlova = []; $scope.continueFileUpload=function (){ for (var i = 0;i<(file.files.length
$scope.imenaFajlova = [];
$scope.continueFileUpload=function (){
for (var i = 0;i<(file.files.length);i++) {
$scope.nameFile.push(file.files[i].name);
}
$http({
method: 'POST',
url: uploadUrl,
})
.success(function(data, status) {
document.getElementById("fromFileUpload").reset();
$location.path('/success');
})
.error(function(data, status) {
});
};
当更改根url时,如何将日期发送到另一个视图或保存数据?您可能应该使用一个服务来处理页面之间的数据移动,而不是使用同一个控制器
angular
.module('myApp')
.controller('NamesController', NamesController);
function NamesController($scope, namesFactory) {
namesFactory.pushNames("Ante");
console.log(namesFactory.getNames()); // prints ["Ante"] to the console
$scope.names = namesFactory.getNames();
}
您可以阅读有关服务的信息。使用同一控制器并不意味着它共享同一控制器实例。它们要么需要有一个公共父级(未重新初始化),要么将数据存储在工厂/服务中并从那里读取。正如其他人建议的那样,您应该使用工厂或服务 如果是工厂,你首先写一个工厂
angular
.module('myApp')
.factory('namesFactory', namesFactory);
function namesFactory() {
var names = [];
return {
pushNames: pushNames,
getNames: getNames
};
function pushNames(x) {
names.push(x);
}
function getNames() {
return names;
}
}
然后将工厂依赖项注入控制器,并使用控制器内部工厂中的方法
angular
.module('myApp')
.controller('NamesController', NamesController);
function NamesController($scope, namesFactory) {
namesFactory.pushNames("Ante");
console.log(namesFactory.getNames()); // prints ["Ante"] to the console
$scope.names = namesFactory.getNames();
}
对于ng repeat,您将使用以下内容
<ul>
<li ng-repeat='name in names'>{{name}}</li>
</ul>
- {{name}
每次更改视图时都会重新创建控制器。使用服务代替感谢您的建议。。。当然我需要使用这项服务。是的,现在名单上有名字。。。但是还有一个问题<代码>工厂('namesService',['$window',函数(win){var name=[];返回函数(name){names.push(name);if(names.length==4){win.alert(names[1]);names=[];};};}])代码>。。。。当我调用
。。。什么都没发生。。。?如何在html代码中从服务调用列表?当您编写工厂时,需要在其中编写两个函数,一个用于设置数据,另一个用于获取数据。。。将factory模块导入原始控制器并通过该控制器设置数据,然后在新页面控制器中使用get函数并将数据放入可从新页面调用的范围变量中。