Angular 指令与控制器函数

Angular Directive vs. Controller function

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

.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;
                });
            }
        }
    }
])

除了通过 scope: '=' 接收 itinerary 对象,然后在我的 itineraryFactory 中将其分配给 itinerary 对象外,此按钮什么都不做。我这样做是为了在我的 itineraryFactory 中使用我的 getter 和 setter 并将其拉入我的控制器。 在我的控制器中:

$scope.itineraries = itineraryFactory.getItinerary();

我的问题是:这是不是矫枉过正,这应该是一个指令吗?或者我可以在我的控制器中有一个 $scope.function 并做同样的事情。该按钮可能只是在页面上列出行程的 ng-repeat 的一部分。

我觉得我的控制器中有一个 setItinerary() 函数基本上是一样的,可以通过 ng-click 按钮来执行。

想法?

此致,

您可以在模板中完成所有操作。

假设您要从 $scope.itineraries

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