当前位置: 首页 > 面试题库 >

AngularJS指令元素方法绑定-TypeError:无法使用“ in”运算符在1中搜索“ functionName”

姬选
2023-03-14
问题内容

这是主模板的控制器:

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”运算符在1中搜索“ editWebsite”

有人知道这里发生了什么吗?


问题答案:

由于您定义了表达式绑定(&),因此id如果要在HTML中将其绑定为,则需要使用JSON显式调用它edit- website="editWebsite(id)"

确实,Angular需要了解idHTML中的内容,并且由于它不属于您的范围,因此您需要通过以下操作在调用中添加所谓的“ 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});
}

这是这里记录的,寻找涉及的例子 "close({message: 'closing for now'})"

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



 类似资料:
  • 问题内容: 我试图通过ajax发送Get请求,并输出html服务器返回的json数据。 但是,我得到了这个错误。 这是我的代码,它通过ajax将Get请求发送到php文件。当我使用$ .each方法时,它会收到上面显示的错误。 这是我的PHP代码,以json格式返回查询结果。 这个PHP输出的JSON数据是这样的。 有人知道如何解决此问题吗? 请帮帮我。提前致谢 :) 问题答案: 您有一个JSON

  • 本文向大家介绍Angularjs中使用指令绑定点击事件的方法,包括了Angularjs中使用指令绑定点击事件的方法的使用技巧和注意事项,需要的朋友参考一下 项目中,模板中的菜单是jQuery控制的,在Angularjs中就运行不到了,因为菜单项是ng-repeat之后的。 如html Jquery给第一级a链接绑定事件代码像: 因为我之前看过文档说,Angularjs的Controller不处理D

  • 问题是我得到错误(过滤器表达式只能包含非主键属性:主键属性:名称)。租户是我的主分区键,名称是我的主排序键。 我需要在dynamo db中编写与此等效的内容:从项目中选择*,其中tenant='testProject',name in('John','Dave')。

  • 是的,还有其他类似的问题,但我的场景是不同的,因为我的应用程序的结构... 我决定在所有涉及的文件中放置路由器声明,以确保不会缺少声明的指令。 嗯,我的app结构是这样的: app.component:它调用了一个html格式的主模板,我的路由器出口就在这个模板中。navbar.component-是放置路由器链接的位置,并导致错误 main.ts-代码:

  • 问题内容: 我无法在页面上使用自动完成功能,这很麻烦。当我在搜索输入中输入2个字符(“ OW”)时,我得到了预加载器图像(如下所示),但是它从未消失,也从未获得自动完成弹出窗口。查看Chrome中的控制台显示: 这是返回的实际字符串(通过在成功块中添加alert(data)进行确认): 这是自动完成的主要代码 最后,这是预加载器(以防万一有关联)。 有人可以帮忙解释一下发生了什么吗? 问题答案: