账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    angular1.x directive通信问题
    78
    0

    在angular 1.x版本中使用directive,代码如下
    // directive

    module.directive('rankChart', function() {
        return {
            scope: {
                id: "@",
                rankItem: "=",
                rankData: "=",
                reloadChartData: "=rankreload"
            },
            restrict: 'E',
            template: '<div>{{rankData[0].showHand}}</div>',
            replace: true,
            controller: function($scope) {
                var loadRankChartData = function() {
                var option = {
                        grid: {
                            x: 50,
                            x2: 50,
                            y: 0,
                            y2: 0,
                            height: $scope.rankItem.length * 40
                        },
                        xAxis: {
                            type : 'value',
                            axisLine: {show: false},
                            axisLabel: {show: false},
                            axisTick: {show: false},
                            splitLine: {show: false}
                        },
                        yAxis: {
                            type : 'category',
                            axisTick: {show: false},
                            data : $scope.rankItem
                        },
                        series : [
                            {
                                name:'贡献值',
                                type:'bar',
                                stack: '排名',
                                barWidth: 16,
                                itemStyle: {
                                    normal: {
                                        color: '#3F9AE9'
                                    }
                                },
                                label: {
                                    normal: {
                                        color:'#333333',
                                        show: true,
                                        position: 'right'
                                    }
                                },
                                data:$scope.rankData
                            }
                        ]
                    };
    
    
                    var myChart = echarts.init(document.getElementById($scope.id));
                    myChart.clear();
                    myChart.setOption(option);
                    myChart.on('click',function (param) {
                        console.log(param)
                        dataIndex = param.dataIndex
                        angular.forEach($scope.rankData,function (item) {
                            item.showHand = false
                        });
                        $scope.rankData[dataIndex].showHand = true
    
                        console.log($scope.rankData)
                    })
    
                }
    
                // 对外接口
                $scope.reloadChartData = function() {
                    loadRankChartData();
                }
    
    
            }
    
        };
    });
    
    
    

    html

    
     <rank-chart id="rankChart" rank-data="rankData" rank-item="rankItem"
                                                        style="width:400px;"  ng-style="{'height': !rankData.length?'80px' : rankData.length * 40 + 'px'}"   rankreload="rankreload"></rank-chart>
                                                        

    controller

    $scope.rankData = []
    $scope.rankItem = []
    
    请求后--
    $scope.rankData = [{value: 22,sid:22, rank: 1,showHand:false}]
    $scope.rankItem = ['name']
    $scope.rankreload($scope.rankItem, $scope.rankdata);
    

    这里使用的echart,想在点击之后改变它的属性,改了之后在directive里能打印出来,showHand为ture,但是controller里或者说页面的值并没有发生变化,看过文档 说 '=' 是双向绑定,不知道为什么controller的值没有改变呢?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 遗失的美好 普通会员 1楼

      在Angular1.x中,实现双向通信(双向数据绑定)可以通过在组件中使用ngModelngModelController两个属性。

      1. ngModel:这是Angular1.x中用于双向数据绑定的核心属性。它用于将数据绑定到视图中的文本框或输入框。当双向数据绑定触发时,ngModel将自动更新视图中的数据。

      ```html

      ```

      1. ngModelController:这是Angular1.x中用于处理双向数据绑定的控制器。当双向数据绑定触发时,ngModelController将监听ngModel的变化,并相应地更新视图中的数据。

      typescript angular.module('app').controller('AppController', ['$scope', '$http', '$filter', '$parse', function ($scope, $http, $filter, $parse) { $scope.inputValue = $parse($scope.inputValue); $scope.search = $filter('search', $scope.inputValue); }]);

      在实际开发中,你可能需要处理一些额外的问题,比如数据类型转换、异步操作等。你可以参考Angular的官方文档来获取更多关于双向数据绑定的信息。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部