我有一个与页面加载一起运行的控制器。我想改变它,所以只有在点击一个按钮后,该函数才会被调用并显示结果。
HTML:
<div ng-controller="MyController">Files on server: {{ mydata }}
</div>
<ul ng-controller="MyController as controller">
<li ng-repeat="data in controller.mydata">{{ data }}</li>
</ul>
JS:
app.controller('MyController', function($http) {
var vm = this;
vm.mydata = [];
$http.get('list')
.then(function(result) {
console.log(result);
vm.mydata = result.data;
});
});
答案 0 :(得分:1)
我认为你需要将你的http调用放在一些激活onclik的函数中
HTML:
<div ng-controller="MyController as controller">
<ul>
<li ng-repeat="data in controller.mydata">{{ data }}</li>
</ul>
<button ng-click="controller.getData()">get data</button>
</div>
控制器:
app.controller('MyController', function($http) {
var vm = this;
vm.mydata = [];
//http call is in the 'getData' function
vm.getData = function(){
$http.get('list')
.then(function(result) {
console.log(result);
vm.mydata = result.data;
});
}
答案 1 :(得分:0)
使用带有按钮的ng-click
来定义要在点击时调用的函数,并在该函数内调用$http.get
。
<button ng-click="myFunction()">Click</button>
在您的控制器中
vm.myFunction = function() {
$http.get('list').then(function(result) {
console.log(result);
vm.mydata = result.data;
});
});
答案 2 :(得分:0)
喜欢那样:
的 HTML 强>
<div ng-controller="MyController">Files on server: {{ mydata }}
</div>
<input type="button" value="Click" id="refresh"/>
<ul ng-controller="MyController as controller">
<li ng-repeat="data in controller.mydata">{{ data }}</li>
</ul>
Java脚本
app.controller('MyController', function ($http) {
var vm = this;
vm.mydata = [];
vm.refresh = function () {
$http.get('list')
.then(function (result) {
console.log(result);
vm.mydata = result.data;
});
};
});
答案 3 :(得分:0)
您可以简单地切换可见性。这样,您可以预先加载数据并在需要时显示。
<ul ng-if="!controller.hide">
<li ng-repeat="data in controller.mydata">{{ data }}</li>
</ul>
<button ng-click="controller.hide=false">Show Me!</button>
我从ul
删除了ng-controller指令。我会把它放在包含所有其他元素的更高级元素上。
答案 4 :(得分:0)
最好只对服务器进行一次调用,这样就可以从头开始获取数据了。
您可以切换可见性,而不是拨打API。
<ul ng-controller="MyController as controller">
<a href="#" ng-click="controller.display == !controller.display">
Toggle Info
</a>
<li ng-if="controller.display" ng-repeat="data in controller.mydata">{{ data }}</li>
</ul>
将显示减速为:
vm.display = false;
使用该标签将切换li元素的可见性。