AngularJS指令元素方法绑定 – TypeError:不能使用'in'操作符来search1中的'functionName'
这是主模板的控制器:
app.controller('OverviewCtrl', ['$scope', '$location', '$routeParams', 'websiteService', 'helperService', function($scope, $location, $routeParams, websiteService, helperService) { ... $scope.editWebsite = function(id) { $location.path('/websites/edit/' + id); }; }]);
这是指令:
app.directive('wdaWebsitesOverview', function() { return { restrict: 'E', scope: { heading: '=', websites: '=', editWebsite: '&' }, templateUrl: 'views/websites-overview.html' } });
这是指令如何在主模板中应用:
<wda-websites-overview heading="'All websites'" websites="websites" edit-website="editWebsite(id)"></wda-websites-overview>
这是从指令模板(website-overview.html)调用的方法:
<td data-ng-click="editWebsite(website.id)">EDIT</td>
问题:单击编辑时,控制台中将显示此错误:
TypeError:不能使用'in'运算符来search1中的'editWebsite'
有人知道这里发生了什么?
既然你定义了一个expression式绑定( &
),你需要明确地用一个包含id
的JSON来调用它,如果你想在HTML中绑定它, edit-website="editWebsite(id)"
。
的确,Angular需要了解这个id
在你的HTML中是什么,因为它不是你的范围的一部分,所以你需要在你的调用中添加所谓的“locals”
data-ng-click="editWebsite({id: website.id})"
或者作为替代:
data-ng-click="onClick(website.id)"
使用控制器/链接代码:
$scope.onClick = function(id) { // Ad "id" to the locals of "editWebsite" $scope.editWebsite({id: id}); }
这是logging在这里,查找涉及"close({message: 'closing for now'})"
的例子"close({message: 'closing for now'})"