在指令中使用ng-repeat循環顯示出商品清單
angular.module("goodsInsert",[])
.directive("myDirective",function(){
return{
restrict:'EA',
template:'<p class="goods_wrap" ng-repeat="item in data" ng-click="toPage({{item.id}})">'
+'<p class="goods_left"><img src="{{item.images}}" alt="" /></p>'
+'<p class="goods_right">'
+'<p class="goods_describe">{{item.name}}</p>'
+'<p class="goods_info"><p>{{item.price | currency:"¥"}}</p><p>已售{{item.saleCount}}件</p></p>'
+'<p class="user_wrap"><img src="{{item.producer.header}}" alt="" class="user"/><p class="grey">{{item.producer.lastname}}</p></p>'
+'</p>'
+'</p>'
};
});
在controller中定義跳轉傳參,main為產品清單展示頁,design為選取跳轉的商品詳情頁
myApp.controller("mainCtrl", function($scope,$http,goodsService,$state) {
var data=goodsService.getNewGoods();
data.then(function(data){
$scope.data=data.results;
},function(data){
$scope.error=data;
});
$scope.toPage=function(id){
if ($scope.$root.$$phase != '$apply' && $scope.$root.$$phase != '$digest') {
$scope.$apply();
}
alert(111);
$state.go('index.detail',{ID:$scope.data[0].id});
}
});
myApp.controller('designCtrl',function($scope,$state,$stateParams){
var receivedId = $stateParams.ID;
alert(receivedId);
})
此時並不跳轉,也不能觸發點擊事件,將在ng-repeat中添加的ng-click改為toPage(id)可以跳轉,但此時傳遞的參數依然是controller中寫死的$scope .data[0].id,不是點選對應的商品
請問各位大神有什麼解決辦法嘛?
找到答案啦! !
ng-click=toPage(item.id)
去掉參數中的{{}},其他都不需要動,就可以解決哦
雷雷 雷雷
額。 ng-click中的方法傳參,不需要{{}}