Angular.js를 사용하여 기본 전자 상거래 인터페이스를 설정하고 있습니다.
기본적으로 장바구니에 추가 버튼을 클릭하면 메인 탐색 바의 장바구니에 추가 된 div가 팝업되도록하고 싶습니다. 이것이 mainNavbar 지시어 컨트롤러에서 click1 변수를 사용하여 수행되는 작업입니다.
사용자 지정 지시문으로 사용되는 상단 탐색 모음에 대한 컨트롤러가 있습니다.
app.directive('mainNavbar',function(){
return {
restrict:'E',
templateUrl:'partials/nav.html',
controller:'navController',
link:function(scope,element)
{
scope.$watch('click1',function(value){
if(value==1)
{
$('#cart').css('display','block');
}
else
{
$('#cart').css('display','none');
}
});
}
};
});
app.controller("navController",function($scope,thefactory,$q,$routeParams)
{
$scope.count=0;
$scope.click1=0;
$scope.cart_amt=0;
$scope.cartdata=[];
$scope.showcrt=function()
{
$scope.cart_amt=thefactory.cart_amt;
var i=0;
while(i<thefactory.prods.length)
{
$scope.cartdata[i]=thefactory.prods[i];
i++;
}
thefactory.setcartval(1);
$scope.click1=1;
};
$scope.hidecart=function()
{
$scope.click1=0;
thefactory.setcartval(0);
};
$scope.$watch('thefactory', function (newVal,oldVal,scope)
{
if (typeof newVal == 'undefined') {
}
else
{
if(newVal.getcartval()==1)
{
scope.showcrt();
}
if(newVal.numcartelem>oldVal.numcartelem)
{
scope.count=newVal;
}
}
});
});
공장
app.factory('thefactory',function($http,$q)
{
var factory={};
factory.products=[];
factory.cart_amt=0;
factory.prods=[];
factory.numcartelem=0;
var showcart=0;
factory.getcartval=function()
{
return showcart;
};
factory.setcartval=function(a)
{
showcart=a;
};
factory.addprod2cart=function(a,b,c,d)
{
factory.cart_amt+=c;
factory.numcartelem++;
factory.prods.push({'heading':a,'seller':b,'price':c,'img':d});
};
return factory;
});
카트에 제품을 추가하기위한 또 다른 컨트롤러.
app.controller("productController", function($scope,thefactory,$q,$routeParams)
{
$scope.data=[];
$scope.product_id = $routeParams.productId;
$scope.data=thefactory.products[$scope.product_id-1];
$scope.addcart=function(a,b,c,d)
{
console.log("Add to cart called!");
thefactory.addprod2cart(a,b,c,d);
};
});
이제 문제는 팩토리 addprod2cart 함수를 호출하고 팩토리 객체를 변경해야하는 productController에서 장바구니에 추가 기능을 호출하더라도 팩토리 객체의 시계가 navController에서 호출되지 않는다는 것입니다. 내 탐색 모음에서 카트 버튼을 클릭하면 업데이트 된 개체가 표시되므로 팩토리 개체가 수정 된 것입니다. 그러나 그 물체의 시계는 작동하지 않습니다. 동일한 솔루션을 제안하십시오. 감사!
문제는 시계 표현이라고 생각합니다.
thefactory
범위에 추가해보세요
$scope.thefactory = thefactory;
$scope.$watch('thefactory', function (newVal,oldVal,scope) {}, true);
또는
$scope.$watch(function(){
return thefactory;
}, function (newVal,oldVal,scope) { }, true);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다