javascript
  • angularjs
  • 2014-02-09 65 views 0 likes 
    0

    我使用模板和隔離範圍創建了可重用組件/控件作爲指令。我希望能夠將回調發送到指令並在小部件中調用它。這可能嗎? 喜歡的東西...AngularJS;將父函數發送到指令範圍

    MAINVIEW模板: <my-widget callback="someFunction"></my-widget>

    指令:

    return { 
        restrict: 'E', 
        scope: { 
         callback: '=' 
        }, 
        templateUrl: '/partials/widget.html', 
    } 
    

    而且模板:

    <input type="text" ng-change="callback()" /> 
    

    因此,當控件值發生改變時,會觸發在主視圖中傳遞的回調函數

    +0

    是的,我們就是這麼做的。 – Satpal

    +0

    你應該使用回調:'&'而不是'=' – michael

    回答

    1

    您要找的是&Quoting the old angular docs:「&或& attr - 提供在父範圍的上下文中執行表達式的方法」。

    試試這個作爲你的指令代碼:

    return { 
        restrict: 'E', 
        scope: { 
         callback: '&' 
        }, 
        templateUrl: '/partials/widget.html', 
    } 
    
    +0

    我試過這個,但我現在得到:http://docs.angularjs.org/error/$compile:ctreq?p0=ngModel&p1=ngChange – Abby

    +0

    如果我使用ng-init =「callback()」,但它不能執行ng-change,它工作正常 – Abby

    0

    您還可以在$鏈接或控制器注意它。

    .directive('myDirective', function() { 
    
        return { 
        restrict: 'E', 
        link: function(scope, element, attrs) { { 
         scope.$watch(attrs.myDirective, function(value){ ... }); 
        } 
        ... 
    
    0

    原來我需要做的建議,並使用&,而不是=,而且這仍然是行不通的,直到我說NG-模式以及我的輸入:

    <input type="text" ng-model="myValue" ng-change="callback()" /> 
    
    相關問題