观看父控制器功能

时间:2017-09-26 07:06:04

标签: javascript angularjs

我的项目的一部分是组件B this.functionName = function(){}; ,在组件A 内。
两个组件都有不同的控制器(控制器) 在控制器组件A 中,创建了如下函数:

ng-click

在事件$watch发生时调用。

问题的实质: 与组件B 的控制器一样,每次调用此功能(控制器A)时,都要执行一些操作? 我想我可以某种方式使用$scope.$parent.$parent.$watch;,但我想做的不像{{1}}

1 个答案:

答案 0 :(得分:0)

作为使用角度事件系统的替代方法,您可以使用服务来共享组件之间的状态。

以下是的示例(我在此忽略了最佳做法,缩短了示例)

app.service('myService', function(){
    var service = this;
    service.items = [];

    service.addItem = function(newItem){
        service.items.push(newItem);
    }
});

app.component('cmpA', {
    template: [
        '<ul>',
            '<li ng-repeat="item in $ctrl.items track by $index">{{item}}</li>',
        '</ul>'
    ].join(''),
    controller: function(myService){
        this.items = myService.items;
        console.log(this.items);
    }
});


app.component('cmpB', {
    template: [
        '<div>',
            '<input ng-model="$ctrl.newItem" /><button type="button" ng-click="$ctrl.save()">Save</button>',
        '</div>'
    ].join(''),
    controller: function(myService){
        this.newItem = '';
        this.save = function(){
            myService.addItem(this.newItem);
            this.newItem = '';
        }
    }
});

You can see it in action in this plunker.

希望这是你需要的东西。