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

angularJS:如何在父范围中调用子范围函数

史智志
2023-03-14
问题内容

如何从其父范围调用在子范围中定义的方法?

function ParentCntl() {
    // I want to call the $scope.get here
}

function ChildCntl($scope) {
    $scope.get = function() {
        return "LOL";    
    }
}

http://jsfiddle.net/wUPdW/


问题答案:

您可以$broadcast从父母到孩子使用:

function ParentCntl($scope) {

    $scope.msg = "";
    $scope.get = function(){
        $scope.$broadcast ('someEvent');
        return  $scope.msg;        
    }
}

function ChildCntl($scope) {               
    $scope.$on('someEvent', function(e) {  
        $scope.$parent.msg = $scope.get();            
    });

    $scope.get = function(){
        return "LOL";    
    }
}

工作jsfiddle:http :
//jsfiddle.net/wUPdW/2/

更新 :还有另一个版本,耦合性更低,更易于测试

function ParentCntl($scope) {
    $scope.msg = "";
    $scope.get = function(){
        $scope.$broadcast ('someEvent');
        return  $scope.msg;        
    }

    $scope.$on('pingBack', function(e,data) {  
        $scope.msg = data;        
    });
}

function ChildCntl($scope) {               
    $scope.$on('someEvent', function(e) {  
        $scope.$emit("pingBack", $scope.get());        
    });

    $scope.get = function(){
        return "LOL";    
    }
}

jsfiddle:http :
//jsfiddle.net/uypo360u/



 类似资料:
  • 问题内容: 我想知道如何在给定父范围的情况下获取所有子范围的列表。我可以从该范围的属性中找到$ childHead,$ childTail,$ nextSibling和$$ prevSibling。 我现在使用的方法是从父级获取childHead,然后使用nextSibling获取下一个孩子,直到nextSibling为空。 有没有更好的方法?鉴于我想在所有子项上调用方法[getModel],是否

  • 问题内容: 我正在开发一个指令,该指令根据在模板中定义的click事件(ng- click)来显示和隐藏其内容。在某些使用该指令的视图上,我希望能够知道该指令当前是显示还是隐藏其内容,因此我可以响应DOM更改。该指令具有单独的作用域,当该指令被“切换”时,我试图通知父作用域。我正在尝试通过将回调函数传递给使用该指令的指令来实现此目的,该指令可以在指令的状态更改(即隐藏或显示)时调用 我不确定该指令

  • 问题内容: 如果我有以下控制器: 读出的正确方法是什么?如果有必要定义中,也不会使它语义上不正确假设是描述相关的东西的属性,而不是? 更新: 对此进行进一步的思考,如果一个孩子有多个孩子,将会在检索上产生冲突。我的问题是,什么是访问的正确方法是从? 问题答案: AngularJS中的作用域使用原型继承,当在子作用域中查找属性时,解释器将从子对象开始查找原型链,并继续寻找父对象,直到找到该属性为止,

  • 问题内容: 我有两个控制器,一个封装在另一个中。现在,我知道子范围从父范围继承属性,但是有没有办法更新父范围变量?到目前为止,我还没有遇到任何明显的解决方案。 在我的情况下,我在表单中有一个日历控制器。我想从父范围(即表单)更新开始日期和结束日期,以便表单在提交时具有开始日期和结束日期。 问题答案: 您需要在父作用域中使用一个对象(不是原始对象),然后就可以直接从子作用域中更新它 上级: ctrl

  • 问题内容: 在我的测试中,给定2个文档A和B。在A文档中,有一个iframe,iframe源是B文档。我的问题是如何修改B文件的某些变量范围? 这是我的代码:一个文档 我的B文件: 注意:实际上,有一些方法可以做到,我觉得这就像是一种破解,而不是完成它的正确方法:即在b Document中创建一个按钮,然后与angularjs ng- click绑定。之后,一个文档jquery“触发”单击按钮。

  • 问题内容: 我有一个从或指令属性或任何其他属性中获得的字符串,我想基于此在作用域上创建一个变量。所以: 但是,如果字符串包含一个或多个点,我想将其拆分并实际上“向下钻取”到作用域中。所以应该成为。这意味着简单版本不起作用! 在读取基于字符串的变量时,您可以通过做来获得这种行为,但是在分配值时如何实现呢? 问题答案: 我发现的解决方案是使用$ parse。 “将Angular表达式转换为函数。” 如