gpt4 book ai didi

javascript - Angular 范围未更新为出厂值

转载 作者:行者123 更新时间:2023-11-30 12:21:29 25 4
gpt4 key购买 nike

我创建了一个非常简单的工厂

angular.module('vpmClient')

.factory('DatosFactory', function($http){
var datos = {};
datos.data = [];

datos.getDatos = function(){
$http.post('php/dataHandler.php',{action:"get_datos"}).success(function(data){
datos.data = data;
});
};

datos.getDatos();

return datos;
})

然后在 Controller 中我将值从“datos.data”设置为范围变量

angular.module('vpmClient')

.controller('DatosController', function($http,$scope,DatosFactory){
$scope.datos = DatosFactory.data;
$scope.datoSeleccionado = {};

$scope.getDatos = function(){
console.log(DatosFactory.data);
return DatosFactory.data;
}

$scope.mostrarDato = function(dato){
//$scope.datoSeleccionado = dato;
//Magia
}
});

我需要在工厂发布结束后更新“scope.datos”的值

注意:我从工厂(在成功内部)做了一个 console.log,它正确地给了我对象,而且,在 Controller 中,我创建了一个函数来从浏览器控制台返回工厂的值,它也可以工作,但是当我 console.log "scope.datos"它返回一个空对象。

抱歉我的英语不好

最佳答案

只需将 $http 的 promise 返回给 Controller

angular.module('vpmClient').factory('DatosFactory', function($http){
var datos = {};
datos.data = [];

datos.getDatos = function(){
return $http.post('php/dataHandler.php',{action:"get_datos"});
};

return datos;
})

然后在 Controller 中调用服务

angular.module('vpmClient').controller('DatosController', function($http,$scope,DatosFactory){



$scope.datos = DatosFactory.data;
$scope.datoSeleccionado = {};

$scope.getDatos = function(){
DatosFactory.getDatos()
.then(function(httpResponse){
console.log(httpResponse.data);
$scope.datoSeleccionado = httpResponse.data;
})
}
});

关于javascript - Angular 范围未更新为出厂值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30871675/

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