javascript - 关于angularjs中directive中scope只在页面加载时运行的问题
大家讲道理
大家讲道理 2017-04-11 12:55:25
[JavaScript讨论组]

在controller中有一个ngclick的函数定义,在定义函数中设置$scope.xx的值,并最后执行$scope.$apply();但是对应的directive的link中alert(JSON.stringify($scope.data));只在页面加载时执行了$scope.data的初始值,对于后面button的按下,触发ngclick函数中执行$scope.data的变更却没有关联到directive中的对应数据变更,求各位大大的帮忙,非常感谢,下面是代码:

首先下面代码能通过ajax获取返回值,并能成功取得。现象是画面加载时画面弹出对话框显示[3,3,3,3],但是当画面点击按钮执行了ngclick的程序$scope.materialMethodForecast后,变更了$scope.data值并apply后,directive中并没有alert数据,就是画面没有跳出对话框显示[1,2,3,4],代码如下:


app.controller("material-method-ctrl", function ($scope) {

$scope.data = [3, 3, 3, 3];
$scope.materialMethodForecast = function () {
        $.ajax({
            url: contextPath + "/predictPerformance",
            type: "POST",
            contentType: "application/json;charset=utf-8",
            dataType: "json",
            data: mapJson,
            success: function (data) {
                var dataObj = eval("(" + data + ")");
                var ratio = dataObj.graph.ratio;
                $scope.data = ratio; //如获得为数组:[1,2,3,4]
                $scope.$apply();
            },
            error: function (res) {
                alert(res.responseText);
            }
        });
    }
}

});
app.directive("radar", function () {

return {
    scope: {
        id: "@",
        data: "="
    },
    restrict: "E",
    template: "

", replace: true, link: function ($scope, element, attrs, controller) { alert(JSON.stringify($scope.data)); } };

});


真的很困惑,求帮助~

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
怪我咯

给你一个最简单的魔法技巧:

<radar id="performance-radar" data="data" ng-if="data"></radar>

但,我不会告诉你原因。

巴扎黑

@cipchk 这个的确是可以了,但是我再点击后就又是只有一次进入数据变化,第一次点击后,按代码注释写的,画面加载时没有跳出[3,3,3,3],点击后的确alert了[1,2,3,4],但是之后的点击没有实时反映到alert中,即:第二次点击假设ajax返回数据为[5,5,5,5],那第二次的点击也没有alert[5,5,5,5],我想代码事项的是我想有一变化就要alert出这个data。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号