Я не уверен, почему, но у меня есть несколько функций, называемых 2-4 раза, как только загружается маршрут. Почти любой маршрут у меня есть. Это похоже на то, что Controller запускает функции, хотя я не намерен вызывать их до ng-click и т. Д. В моем коде нет никаких наблюдателей. Я использую UI-маршрутизатор, и я назначаю контроллер как в параметрах маршрутизации, так и на самой странице. И да, я использую функцию init для перезагрузки страницы после определенных событий. Это по-прежнему дает мне тот же вопрос, прежде чем добавить, что вПроблема с функциями функции AngularJS
Я могу привести простой пример, начиная с HTML загружается:.
<a ng-click="finalizarCompra()" class="button btn-ing transition notopmargin fright">Finalizar compra</a>
Сам контроллер:
.controller('CarritoController',
['$scope', '$http', 'Carrito',
function ($scope, $http, Carrito, Session) {
$scope.initCarrito = function(){
Carrito.getCart();
};
$scope.tieneProductos = function() {
return Carrito.getCart().length > 0;
};
$scope.productos = Carrito.getCart();
$scope.total = Carrito.totalCarrito();
$scope.finalizarCompra = Carrito.finalizarCompra();
}])
// The factory it's using:
.factory('Carrito', ['$http', 'Productos', 'Session',
function ($http, Productos, Session){
var carritoUsuario = [];
var todosLosProductos = Productos.todos();
var unProducto = function() {}
return {
findBySKU : function(sku) {
console.log("Finding: " + sku + " from Carrito service findBySKU...");
return _.find(carritoUsuario, function (producto){
return producto.SKU == sku;
});
},
getProducto : function(id) {
console.log("Getting: " + id + " from Carrito service getProducto...");
return Producto.findById(id);
},
getCart : function() {
console.log("Getting cart from Carrito service getCart");
return carritoUsuario;
},
addToCart : function(Prod, cant, m1, m2, m3, m4, m5) {
unProducto.SKU = "" + Prod.stockid + m1 + m2 + m3 + m4 + m5;
/*
s*/
console.log("Constructed product SKU is: ");
console.log(unProducto.SKU);
if(angular.isDefined(this.findBySKU(unProducto.SKU))) {
var i = _.findIndex(carritoUsuario, function (prod) {
return prod.SKU == unProducto.SKU
});
carritoUsuario[i].Cantidad += unProducto.Cantidad;
} else {
carritoUsuario.push(unProducto);
}
console.log(carritoUsuario);
},
finalizarCompra: function() {
var lineas = [];
_.forEach(carritoUsuario, function (e) {
var obj = {
"stockid" : e.stockid,
"cantidad" : e.Cantidad,
"sku" : e.SKU,
"precio": e.Precio
}
lineas.push(obj);
}
)
var calipsoData = {idUser: Session.recallId(),
"lineas":lineas};
console.log("Data being sent to calipso is: ");
console.log(angular.toJson(calipsoData));
$http.post('http://restservice',
angular.toJson(calipsoData))
.success(function (data){
console.log("Alta Pedido exitoso. Data recibido: ");
console.log(data);
})
}
};
}])
I «Извините, если этот вопрос кажется расплывчатым, но я надеюсь, что раньше у кого-то с более уральским опытом был подобный опыт. Я просто не должен получать больше одного консольного журнала всего, что было на странице, прежде чем оно будет вызвано. И в finalizarCompra() это как-то вызывается при загрузке страницы вместо нг нажмите
UPDATE: это изменить:
$scope.finalizar = Carrito.finalizarCompra();
к этому
$scope.finalizar = Carrito.finalizarCompra;
Не решить эту проблему. Тот факт, что его никогда не называют, не имеет смысла.
Я не вижу его в коде, но и обеспечивает контроллер как в определении маршрута * и * в HTML частичное является не верно. – hgoebl
Ну, я решил главный вопрос. Я должен был поставить ссылку на заводскую функцию внутри любой бесполезной функции. Выглядит уродливо, но я полагаю, что это имеет смысл.Теперь мне просто нужно выяснить, почему сама корзина покупок загружается шесть раз при загрузке страницы, потому что это * * уже в анонимной функции. – mitbanip
Вы обновили свой код? Не могли бы вы удалить часть «шума» (мертвый код, не соответствующий коду)? – hgoebl