我面临一个问题(或可能是两个),这让我感到沮丧;请记住,我是一个相当初学的编码员,所以我很有可能错过了一些明显的东西。
一:我有一个页面,其侧边栏通过包含margin-left的类隐藏:-90%。删除课程后,栏会滑入以填满整个屏幕。我可以使用jQuery轻松处理这个问题,但我宁愿尽可能多地使用Angular - 为此,我已经给出了以下代码:
<div id="detail_box" ng-class="{d_hide: dVis}">
<a href="" class="box_close" ng-click="hide()"></a>
<div tw-detail></div>
</div>
正如您所看到的,有一个类引用控制器中的变量,以及一个连接到函数的ng-click的链接。有问题的控制器非常简单,并且依赖于$ rootScope变量。我只使用rootScope,因为总的来说,在我的整个页面中,我有两个需要动态更改的变量,但对于我所做的每个控制器和指令都是一样的。连接范围和控制器在这里:
app.run(function($rootScope) {
$rootScope.currentUrl = 'visual/design/1/';
$rootScope.detail_hide = true;
});
app.controller('navController', ['$scope', '$rootScope',
function ($scope, $rootScope) {
$scope.dVis = $rootScope.detail_hide;
$scope.hide = function(){
$rootScope.detail_hide = false;
}
}]);
现在,我已经使用了我的ng-click中的console.log来查看它正在获取点击次数,并且我已经使用console.log来确保rootScope的detail_hide部分正在发生变化。如果我在app.js中手动将true更改为false,那么详细信息页面会隐藏起来......但是ng-click实际上并没有 我正在尝试当我在页面上测试它。它是痛苦的,我无法理解为什么通过函数更改变量(我知道在rootScope中更改实际变量,这要归功于广泛的测试)并不能说明我的细节盒子就要消失了。
其次,它与第一个相连;在rootScope中动态更改currentUrl同样不会改变我的twDetail指令中的实际AJAX内容,即使再次使用我写过的ng-click函数 do < / em>更改变量。手动更改它可以正常工作(虽然第二个URL中的图像不是加载但这可能是一个完全不同的问题)但只是......我在这里做错了什么?
答案 0 :(得分:1)
以下代码仅在设置控制器时运行一次
$scope.dVis = $rootScope.detail_hide
请务必更改$scope.dVis
功能中的hide
,例如
$scope.hide = function(){
$rootScope.detail_hide = false;
$scope.dVis = $rootScope.detail_hide;
}
我需要有关twDetail指令的更多信息才能解决该问题