一個簡單的解決辦法是你的源拉出成一個函數調用並注入額外變量到結果:
<input type="text" ng-model="selected" typeahead="item as item.label for item in filterTitles($viewValue, filterFirst, filterLast)" typeahead-template-url="itemTpl.html" />
,並在控制器:
$scope.filterTitles = function(filterText, shouldFilterFirst, shouldFilterLast){
var result = [];
for(var i=0;i<$scope.titles.length;i++){
var title = $scope.titles[i];
if((shouldFilterFirst && title.first.toLowerCase().indexOf(filterText.toLowerCase()) >= 0) || (shouldFilterLast && title.last.toLowerCase().indexOf(filterText.toLowerCase()) >= 0))
result.push({
first: title.first,
last: title.last,
shouldFilterFirst: shouldFilterFirst,
shouldFilterLast: shouldFilterLast
});
}
return result;
}
Simple plunker example
這可以做得更優雅,但希望傳達這個想法。
爲什麼你不想創建sepereate指令?並將你的模板寫入指令和賦值控制器的一部分,在這種情況下,作用域將是可訪問的 –