2013-08-12 3 views
2

동적으로 HTML에 추가 된 제품 목록이 있습니다. 사용자가 제품을 클릭하면 장바구니에 추가되어야합니다 (think, jQueryUI shopping cart example).각도로 DIV 텍스트 삽입

HTML : 이 동적 목록에서 클릭 한 제품을 검색하여 JSON 객체에 삽입하려면 어떻게해야합니까?

<li ng-model="selectProduct" ng-click="addProduct()" ng-repeat="product in Products"> 
    {{product}} 
</li> 

스크립트

$scope.addProduct = function() { 
    $scope.myProducts.push($scope.selectProduct); // add text of the selected product 
}; 

$scope.myObject = { 
    myProducts: [] 
}; 

jQuery를에 그것은이

같은 일을 할 수 있도록

$("p").click(functions(){ 
    var aa = $(this).text() 
    myObject = { 
    'selectProduct': aa 
    }; 
}); 

답변

3

같은 당신은 매개 변수로 전달할 수있을 것입니다 HTML :

,210
<li ng-click="addProduct(product)" ng-repeat="product in Products"> 
    {{product}} 
</li> 

컨트롤러 :

$scope.Products = ["One","Two","Three","Four"] 
$scope.myObject = { 
    myProducts: [] 
}; 

$scope.addProduct = function (thisProduct) { 
    $scope.myObject.myProducts.push(thisProduct); 
}; 

동작하는 예제가 http://jsfiddle.net/trMKQ/에있다 (참조하기 위해 제품 이름을 클릭).

+0

이'this.product' 심지어 ngRepeat 지시어 내에서 클릭을 사용하는 경우 일 것이다. –

+0

재미 있습니다. 고마워요. 개인적으로 필자는 매개 변수를 전달하면 문제가 좀 더 명확해질 것이라고 생각합니다. – mikel

0

당신은 클릭 제품에 표시하는 '데이터'속성을 사용해야합니다 :

$('.product').click(function() { 
    $(this).data('clicked', '1'); 
}); 
+1

질문에 대한 오해 –

1

@mikel의 대답하는 대신를, 당신은 실제로 단지 직접 모델에 액세스 할 수 있습니다.

당신의 HTML 코드는 다음과 같습니다.

<li ng-click="addProduct()" ng-repeat="product in Products"> 
    {{product}} 
</li> 

각도 클릭 방법은 다음과 같습니다.

$scope.addProduct = function(){ 
    var selectedProduct = this.product; // where product = product in Products. 
}; 

당신이 item in Products에 반복 지시를 변경 한 경우 다음 일치하는 JS는 당신이 실제로 단지 코드를 사용할 수 있습니다 각도에서 this.item;