【发布时间】:2015-07-20 10:28:42
【问题描述】:
我有一个指令来做两件事:(i) 它管理 HTML 中某些选项卡的可视化,(ii) 它 $watches 对象 myObj 在会话中的值存储并将此对象保存在名为myData 的变量中。代码如下:
.directive('panelManager', function(){
return {
restrict: 'E',
templateUrl: 'foo.html',
controller: ['$scope', '$window', function($scope, $window) {
pn = this;
pn.tab = 1; // init
this.selectTab = function(setTab) {
pn.tab = setTab;
};
this.isSelected = function(checkTab) {
return pn.tab === checkTab;
};
$scope.$watch(function () {
return $window.sessionStorage.getItem('myObj');
}, function (value) {
pn.myData = JSON.parse(value);
});
}],
controllerAs: 'panels'
};
})
我有一个控制器来调用一个 WS 传递上述myData 的属性foo,每次它发生变化时。这里是:
.controller('MyDataController', ['$http', function($http) {
pdc = this;
pdc.myResultset = [];
pdc.getDetails = function(val) {
return $http.get("myUrl"+val+"/").then(function(response){
pdc.myResultset= response.data;
});
};
}]);
有没有办法在该控制器中触发 getDetails 并在每次 myData 更改值时将 val = MyData.foo 传递给它?
这样,我就可以在myResultset中存储WS的当前结果集并将其分配给本地范围。
【问题讨论】:
-
一种选择是将 myData 放在根范围内,然后:1. 您仍然可以从指令访问它 2. 您可以在 MyDataController 中查看更改
标签: javascript angularjs