2014-04-17 51 views
0

我有一個自定義指令。在我的HTML我寫這篇文章:通過angularjs將參數傳遞給指令中的函數調用

<uploader action="/rest/file/create_from_form.json" success="writeFid()"></uploader> 

我需要的是給exec「成功」屬性函數傳遞一些數據,我從我的指令獲取。我可以通過

$scope.$eval($scope.success) 

,並在我的「控制器」 EXEC「成功」屬性的功能我有這樣的:

$scope.writeFid = function (data) { 
     console.log("Into writeFid"); 
     console.log(data); //this is my problem: it is always undefined. 
    } 

我可以看到(通過執行console.log()消息)「成功」功能被稱爲但沒有傳遞「數據」。

我曾嘗試使用

<uploader action="/rest/file/create_from_form.json" success="writeFid(data)"></uploader> 

,但它不工作。

所以:我怎麼能通過某種類型的$ scope.data?

謝謝。

+0

請問您的指令,使用分離的範圍? –

+0

[如何將參數傳遞給控制器​​中定義的方法,但是從Angularjs中的指令調用?](http://stackoverflow.com/questions/21401308/how-to-pass-argument-to-method-defined-in -controller,但所謂的從 - 指令-I) –

回答

2

我不知道你的指令是否使用分離範圍或沒有,所以我將介紹這兩種情況下:

如果沒有分離範圍:

scope.$eval(attrs.success, { data: 'Some value from foo' }); 

隨着分離範圍:無論範圍的類型

scope: { success: '&' }, 
... 
scope.success({ data: 'Some value from bar' }); 

,您的標記必須是這樣的:

<uploader success="writeFid(data)" ...></uploader> 

這裏是一個plunk script顯示兩種方法。

0

您可以在上傳器指令中使用隔離範圍和雙向綁定來稍微實現您的目標。

上傳指令

... 
scope: { 
    data: '=', 
    success: '&' 
} 
... 

樣品父控制器

app.controller('MainCtrl', function($scope) { 
    $scope.dataAttribFromParent = { data: [] }; 

    $scope.writeFid = function() { 
     console.log($scope.dataAttribFromParent); 
    }; 
}); 

標記

... 
<uploader data="dataAttribInParent" success="writeFid()"> 
... 

這裏有一個普拉克闡述:

http://plnkr.co/edit/7Kzy6D7cwxlATEBKRcuT

相關問題