我如何让我的指令根据父范围的父变量正确更新?
我有一个动画指令,我想用它来显示需要通过服务调用来填充的单个数据网格的加载。我目前有一个页面的主模板,并且我有一个 ng-include 用于我想在页面上显示的某个“小部件”。该小部件将显示带有填充信息的 div,或者将显示加载指令,至少这就是我试图让它做的事情。
我正在进行的 $watch 似乎也没有工作,我在那里放了一些日志语句,我手动更改了“test”指向的变量,但它的行为就好像它从未改变过一样。
//One approach to the directive
myApp.directive('loading', function() {
return {
restrict: "E",
scope : {
test : '='
},
templateUrl: 'partials/loading-animation.html'
};
});
包含的 html,其中也包含指令。loadVal 是父级父级控制器范围内的变量。loadVal 会根据服务调用进行更改并正确更新。
<div ng-show="!loadVal" class='address store'>
<span>{{address.storeName}}</span>
<span>{{address.address1}}</span>
<span>{{address.city}},{{address.state}} {{address.zip}}</span>
</div>
<loading test="loadVal" ng-show="test"></loading>
现在,如果我只有指令,它仍然不会出现。我已经使用 ng-switch 进行了尝试,但是由于没有路由更改,它同时显示了加载指令和地址信息。我也尝试过根据一个是真还是假(!loadVal和loadVal)来显示,问题是虽然它似乎不知道“!loadVal”是什么,因为它从不显示ng-show =的html “!loadVal”已打开。
编辑:看起来我工作得很好,这是一个 plnkr 显示我想要实现的目标: Plnkr
注意:我注意到我不能在指令模板上使用 ng-show(即 ng-show="loadVal")引用父范围的父级。但是,如果我创建了一个新变量并将范围设置为双向并将该变量设置为 loadVal,那么它会获取更改。