Javascript 从angular指令向控制器函数传递多个参数
我需要将指令中的两个参数传递给控制器中定义的函数 HTML 现在我在控制器中获得了Javascript 从angular指令向控制器函数传递多个参数,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我需要将指令中的两个参数传递给控制器中定义的函数 HTML 现在我在控制器中获得了newPage和last\u page的undefined 解决方案一(): <div paginate="allResults" change-page="changePage()"></div> app.directive('paginate', function () { return { scope: { allResults: '=
newPage
和last\u page
的undefined
解决方案一():
<div paginate="allResults" change-page="changePage()"></div>
app.directive('paginate', function () {
return {
scope: {
allResults: '=paginate',
changePage:'&'
},
template: '<ul class="pagination" ng-show="totalPages > 1">' +
' <li><a ng-click="firstPage()">«</a></li>' +
' <li><a ng-click="prevPage()">‹</a></li>' +
' <li ng-repeat="n in pages">' +
' <a class="current-{{n==current_page}}" ng-bind="n" ng-click="setPage(n)">1</a>' +
' </li>' +
' <li><a ng-click="nextPage()">›</a></li>' +
' <li><a ng-click="last_page()">»</a></li>' +
'</ul>',
link: function (scope) {
scope.nextPage = function () {
if (scope.current_page < scope.totalPages) {
scope.current_page++;
}
};
scope.prevPage = function () {
if (scope.current_page > 1) {
scope.current_page--;
}
};
scope.firstPage = function () {
scope.current_page = 1;
};
scope.last_page = function () {
scope.current_page = scope.totalPages;
};
scope.setPage = function (page) {
scope.current_page = page;
};
var paginate = function (results, oldResults) {
if (oldResults === results) return;
scope.current_page = results.current_page;
scope.total = results.total;
scope.totalPages = results.last_page;
scope.pages = [];
for (var i = 1; i <= scope.totalPages; i++) {
scope.pages.push(i);
}
};
var pageChange = function (newPage, last_page) {
scope.changePage(newPage, last_page);
};
scope.$watch('allResults', paginate);
scope.$watch('current_page', pageChange);
}
}
});
function CareerCtrl($scope, $http, Career) {
$scope.init = function () {
Career.get({}, function (response) {
$scope.careers = response.careers.data;
$scope.allResults = response.careers;
}, function (error) {
console.log(error);
$scope.careers = [];
});
}; // init
$scope.changePage = function(newPage, last_page) {
console.log(newPage);
console.log(last_page);
if (newPage == last_page) return;
Career.get({
page: newPage
}, function (response) {
angular.copy(response.careers.data,scope.allResults.data);
scope.allResults.current_page = response.careers.current_page;
}, function (error) {
console.log(error);
$scope.allResults.data = [];
});
}
} // Ctrl
Html:
解决方案二():
Html:
请注意,您需要在控制器功能中的两个位置将scope
更改为scope
。$scope.changePage
在原始小提琴中。解决方案一():
Html:
解决方案二():
Html:
请注意,您需要在控制器功能中的两个位置将scope
更改为scope
。$scope.changePage
在原始小提琴中。解决方案一():
Html:
解决方案二():
Html:
请注意,您需要在控制器功能中的两个位置将scope
更改为scope
。$scope.changePage
在原始小提琴中。解决方案一():
Html:
解决方案二():
Html:
请注意,您需要在控制器功能中的两个位置将
scope
更改为$scope
。$scope.changePage
,在您原来的小提琴中。谢谢..我喜欢这样的详细解释。谢谢..我喜欢这样的详细解释。谢谢..我喜欢这样的详细解释这样地。
<div paginate="allResults" change-page="changePage(newPage, last_page)"></div>
var pageChange = function (newPage, last_page) {
scope.changePage({
newPage: newPage,
last_page: last_page
});
};
<div paginate="allResults" change-page="changePage"></div>
var pageChange = function (newPage, last_page) {
var expressionHandler = scope.changePage();
expressionHandler(newPage, last_page);
};