我有一个父控制器,我设置实例化一个名为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);
};
});
答案 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在模板页面上实例化。这搞砸了范围。