javascript – AngularJS指令元素方法绑定 – TypeError:不能使用’in’运算符在1中搜索’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>

问题:当单击EDIT时,此错误出现在控制台中:

TypeError: Cannot use ‘in’ operator to search for ‘editWebsite’ in 1

有谁知道这里发生了什么?

最佳答案
因为你定义了一个表达式绑定(&),你需要使用包含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});
}

这是在这里记录,查找涉及“关闭({消息:’关闭现在’})”)

https://docs.angularjs.org/guide/directive

转载注明原文:javascript – AngularJS指令元素方法绑定 – TypeError:不能使用’in’运算符在1中搜索’functionName’ - 代码日志