gpt4 book ai didi

javascript - 如何从 2 级指令访问 Controller 范围

转载 作者:行者123 更新时间:2023-11-28 01:59:54 25 4
gpt4 key购买 nike

我正在尝试尽可能多地构建通用代码。

所以我有 2 个指令,一个嵌套在另一个指令内,而我希望嵌套指令调用主 Controller $scope 上的方法。

但是它请求父指令上的方法,我想知道如何针对主 Controller 范围而不是父指令执行方法。

这是我的问题的示例代码我的 HTML 应该如下所示:

<div ng-controller='mainctrl'>
<div validator>
<div datepicker select-event='datepickerSelected()'/>
</div>
</div>

Javascript:

var app = angular.module("app",[]);

var mainctrl = function($scope){
$scope.datepickerSelected = function(){
//I WANT TO ACCESS THIS METHOD
}
}

app.directive("validator",function(){
return {
scope : {
//the datepicker directive requests a datepickerSelected() method on this scope
//while I want it to access the mainctrl scope
}
link: function(scope){
//some code
}
}
});

app.directive("datepicker", function(){
return{
scope: {
selectEvent: '&'
}
link: function(scope, elem){
//example code
$(elem).click(scope.selectEvent); //want this to access mainctrl instead validator directive
}
}
});

最佳答案

只需删除验证器指令的范围属性,从而消除其隔离范围。这意味着验证器将具有与其嵌套在(您的 Controller )中的相同范围,并且日期选择器将使用该范围。

如果您希望两者都有独立的作用域(听起来不像您所做的那样),另一种选择是将函数传递到“验证器”作用域。

关于javascript - 如何从 2 级指令访问 Controller 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com