角度指令与控制器功能

时间:2015-10-28 02:34:16

标签: angularjs controller directive

我有一个页面上显示的行程列表。每个行程都有一个选择按钮。这个选择按钮是一个指令。

.directive('itinerarySelectBtn', ['itineraryFactory', 
    function(itineraryFactory){
        return {
            restrict: 'E', // defining the container as an element
            scope: {
                itinerary: '=', // html element we are injecting this directive too
            },
            replace: true,
            templateUrl: '/content/partials/directives/results/results-list.html',
            link: function(scope, element, attrs){
                element.on('click' , function(){
                    itineraryFactory.itinerary = scope.itinerary;
                });
            }
        }
    }
])

除了通过范围接收行程对象外,此按钮不执行任何其他操作:' ='然后将我的itineraryFactory分配给行程对象。我这样做,所以我可以在我的itineraryFactory中使用我的getter和setter并将其拉入我的控制器。 在我的控制器中:

$scope.itineraries = itineraryFactory.getItinerary();

我的问题是:这是否过度,这应该是一个指令吗?或者我可以在我的控制器中使用$ scope.function并执行相同的操作。该按钮可能只是ng-repeat的一部分,列出了页面上的行程。

我觉得在我的控制器中有一个setItinerary()函数基本上是相同的,可以通过按下按钮来执行。

思想?

此致

1 个答案:

答案 0 :(得分:1)

您可以在模板中执行所有操作。

假设您要从$scope.chosenItinerary

中的列表中为控制器分配$scope.itineraries
<div ng-repeat="itinerary in itineraries">
    <button ng-click="chosenItinerary = itinerary">Pick this one!</button>
</div>