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>
我有一个页面上显示的行程列表。每个行程都有一个 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>