Angular Parent Scope变量不变

时间:2015-06-06 06:31:04

标签: javascript angularjs angularjs-scope javascript-objects

我有一个父控制器,我设置实例化一个名为links的对象。我为一个属性分配了一个我想在另一个函数中改变的值。但是,当我在instagramModel中设置变量时,links.imagesa不会更新。

我在控制台中打印出值,并且不会更新parentscope。我以为我遵循了原型继承的规则。

为什么$ scope.links.imagesa没有更新?

.controller('HomeCtrl', function HomeController($scope, titleService, config, $sails, $timeout, $upload, leafletData, $modal, $log) {

    $scope.links = {};
    $scope.links.imagesa = "This should change";

    $scope.instagramModal = function (size) {

        var modalInstance = $modal.open({
            templateUrl: 'instagramModal.html',
            controller: 'InstagramModalInstanceCtrl',
            size: size,
            resolve: {
                items: function () {
                    return $sails.get("/instagram/self").success(function (response) {

                        return response.data;

                    }).error(function (response) {
                        console.log('error');
                    });
                }
            }
        });

        modalInstance.result.then(function (selectedItem) {
            $scope.links.imagesa = "wept";                

        }, function () {
            $log.info('Modal dismissed at: ' + new Date());
        });
    };

    $scope.ask = function () {
        console.log($scope.links.imagesa);
    };

});

3 个答案:

答案 0 :(得分:0)

如果您希望更新父级的作用域,则必须使用 $ scope。$ parent.links.imagesa ,因为子作用域中所做的更改不会直接反映在父作用域中。 / p>

答案 1 :(得分:0)

Angular UI的模态默认使用$ rootScope。请参阅“http://angular-ui.github.io/bootstrap/#/modal

中的文档

打开模式时,可以使用自定义作用域传递作用域参数 - 例如scope:$ scope如果要传递父作用域。模态控制器将从该范围创建子范围,因此您只能将其用作初始值。

因此,如果要更新任何值,请将对象/数据保存在rootScope中。

希望这会有所帮助!!

答案 2 :(得分:0)

我在UI路由器中实例化HomeCtrl,并使用ng-controller在模板页面上实例化。这搞砸了范围。