2016-08-24 69 views
0

我有一個叫做orders-list的指令,我需要將控制器內的對象currentOrder與被點擊的循環內的對象綁定在一起;Angular指令屬性不與控制器綁定

//controler 
app.controller("receivedOrders", ['$scope', 'orders', 'Order', 'currentOrder', function ($scope, orders, Order, currentOrder) { 
    $scope.currentOrder = null; 
    $scope.orders = orders['content']; 


//directive 
app.directive("ordersList", function() { 
    return { 
    restrict: 'E', 
    templateUrl: 'templates/orders_list.html', 
    scope: {orders: '=', currentOrder: '='}, 
    controller: ['$scope','$attrs', function ($scope, $attrs) { 
     $scope.selectOrder =function(order){ 
      $attrs.currentOrder=order; 
     }; 
    //some other functions 
    }] 
} 

//directive definition 
<orders-list current-order="currentOrder" orders="orders"></orders-list> 

//directive body 
<md-list> 
    <order ng-repeat="order in orders|filter:query|orderBy:activeSorting.directionSign+activeSorting.name" 
      order="order" ng-click="selectOrder(order)"></order> 
</md-list> 

-------- ---------更改

這樣就OK了,現在我通過功能selectOrder到內部指令順序,並從中調用selectOrder功能單曲範圍,但它仍然無法正常工作=(

app.directive('order', function() { 
return { 
    restrict: "E", 
    templateUrl: '/templates/order.html', 
    scope: { 
     order: '=', 
     orderClick:'&' 
    }, 

<md-list-item order-click="orderClick({order:order})" class="md-3-line"> 

<order ng-repeat="order in orders|filter:query|orderBy:activeSorting.directionSign+activeSorting.name" 
      order="order" order-click="selectOrder(order)"></order> 
+1

如果是這樣$ scope.currentOrder =秩序; – Developer

+0

@Developer Yeees謝謝你的工作,我是一個盲人白癡 –

+0

大聲笑,碰巧給大家。有時你需要的只是額外的一雙眼睛來解決問題 – Developer

回答

1

變化:

$attrs.currentOrder=order; 

到:

$scope.currentOrder=order; 
1

這是因爲NG-重複創建訂單屬性中的每個元素的新範圍。

的ngRepeat d從一個 集合中,指令實例化一個模板一次。每個模板實例都有自己的作用域,其中給定的 循環變量設置爲當前的集合項目,並且$ index將 設置爲項目索引或鍵。

相關問題