2016-08-24 21 views
0

私はorders-listと呼ばれる命令を持っています。コントローラ内のcurrentOrderオブジェクトをループ内のオブジェクト内にバインドする必要があります。角型属性がコントローラにバインドされていません

//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> 

--------変更---------

今私は、内側のディレクティブの順番に機能selectOrderを渡し、そこからselectOrder関数を呼び出しますので、[OK] `sの範囲が、それはまだ=(

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これは働いてくれてありがとう、私は盲目のばかだ –

+0

笑、誰にも起こる。問題を解決するために余分な目を必要とすることもあります – Developer

答えて

1

変更:

$attrs.currentOrder=order; 

へ:

$scope.currentOrder=order; 
1

動作しないNG-repeatが受注プロパティの各要素のための新しいスコープを作成するためです。

ngRepeat Dディレクティブは コレクションの項目ごとに1回テンプレートをインスタンス化します。各テンプレートインスタンスは独自のスコープを取得します。指定されたループ変数 は現在のコレクションアイテムに設定され、$ indexはアイテムインデックスまたはキーに対して に設定されます。

関連する問題