【发布时间】:2015-10-05 19:14:30
【问题描述】:
我是 Angular 的新手,我无法为这个问题找到任何可靠的答案......即使答案可能已经摆在我面前,我只是看不到它。
我有这段html:
<ul class="wrapper" ng-controller="MyController as vks">
<li ng-repeat="myvar in vks.vk" class="padding-left" data-myvar-id="{{myvar.id}}">
<img src="images/someimage.svg" ng-show="{{myvar.id}} == {{myvar.chosen}}" class="some-class">
<a class="hvr-underline-reveal">{{myvar.name}}</a>
</li>
</ul>
这是我的控制器:
app.controller('MyController', function() {
var i = 0;
var tmp = [];
for (var key in someObject) {
if (someObject.hasOwnProperty(key)) {
var obj = someObject[key];
if (obj.checked) {
tmp[i] = {name: obj.name, id: obj.id, chosen: someStaticVar};
i++;
}
}
}
this.vk = tmp;
});
我想重点介绍第一次加载页面时起作用的部分:
<img ng-show="{{myvar.id}} == {{myvar.chosen}}">
当突然 {{myvar.chosen}}(由静态全局变量设置)从某些外部 javascript 更改时会发生什么? HTML 部分未刷新,并且仍显示特定内容,但应该显示另一个。 我怎样才能只重新加载这个控制器? (或者做其他事情来使这项工作按预期进行?)
希望这是有道理的......
【问题讨论】:
-
是什么导致了全局变量的变化?是某种形式还是用户操作/HTTP 请求/等等?
-
你不应该在 ng-show 中插入你的变量。试试:
<img ng-show="myvar.id == myvar.chosen">也只在第一次加载控制器时设置,所以如果 someStaticVar 发生变化,你可以直接在你的 html 中与它进行比较或添加一个手表
标签: angularjs angular-controller