0

所以我對ng-repeat指令有問題。在我的代碼中,我有一個父控制器,其數據存儲爲對象數組。將函數傳遞給ng-repeat對象

$scope.queue = [ 
    { 
    name: 'Mark', 
    sex: 'Male', 
    age: 21 
    }, 
    {...} 
]; 

$scope.changePositionInQueue = function (currIndex, targetIndex) { 
    // move up/down person in queue 
}; 

我想要做的是通過父控制器對我的指令的(「人」)分離範圍,並在同一時間可以使用「$索引」功能,「$第一」,「$最後」變量。

<person data-change-position="changePositionInQueue" data-person="person" ng-repeat="person in queue"></person> 

指令範圍聲明:

scope: { 
person: '=', 
changePosition: '&' 
} 

的問題是,當我創建NG-REPEAT循環內隔離範圍我失去了NG-重複屬性。另一方面,當我通過ng-repeat創建默認範圍並且我可以訪問所有想要的屬性時,我不能使用父功能。

+0

所以即使通過那些範圍爲參數隔離示波器指令 – harishr

+0

感謝您的回答,但我該怎麼做?以參數方式傳遞參數。$ index或$ index在指令子作用域中給我'未定義'。 – tomeks

+0

類似'index:@'在你的指令定義範圍內,然後在html'data-index =「$ index」'應該做 – harishr

回答

0

這是我的解決您的挑戰:
鑑於:

<my-directive dir-func="fnc($index)" data="data" ng-repeat="data in datas"><span>{{data.id|json}}</span><br></my-directive> 

直接調用父功能鏈接:

myApp.directive('myDirective', function() { 
    return { 
    //require: 'ngModle', 
    scope: { 
     data: "=", 
     dirFunc: "&" 
    }, 
    link: function(scope, elem, attr, ngModel) { 
     scope.dirFunc() // parent scope.func is called here where you get the alert 

    } 

    } 

See the Plunker for detail

+0

謝謝你的回答。它沒有幫助我直接因爲我通過從$父範圍獲得$ index屬性,但我的功能仍然無法正常工作。我通過查看你的指令發現了一個錯誤。我在我的指令中通過引用傳遞函數,但沒有提供有關所需參數的信息。無論如何,問題解決了,非常感謝! – tomeks

+0

很高興幫助,例子的目的就是爲了這個! :)歡呼! – praHoc