javascript - angularjs + bootstrap,模板函数中的btn
问题描述
我正在学习 angularjs 和 bootstrap。这很简单,但我不知道,我做错了什么。关键是用按钮重新加载页面,但我无法进入必须重新加载页面的功能。
这是我的 component.js
myApp.component('refreshComponent', {
template:"<button class='btn btn-lg btn-info' ng-click='refresh()' >Refresh </button>",
controller: function RefreshController($scope, $element, $attrs) {
var vm = this;
vm.refresh = function(){
console.log("How to get here?")
location.reload();
}
}
});
这是我的 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"
integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
</head>
<body>
<div ng-app="myApp" class="container bg-primary img-rounded">
<h1>
<div class="row">
<div class="col-xs-6 text-right">
<date-component></date-component>
</div>
</div>
<div class="row">
<div class="col-xs-6 text-right">
<greetings-component></greetings-component>
</div>
</div>
<div class="row">
<div class="col-xs-6 text-right ">
<refresh-component></refresh-component>
</div>
</div>
</h1>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.9/angular.min.js"></script>
<script src="date.component.js"></script>
<script src="greetings.component.js"></script>
<script src="refresh.component.js"></script>
</body>
</html>
顺便说一句,那些其他组件正在工作
var myApp = angular.module('myApp', []);
myApp 在 date.component.js 中初始化
解决方案
确保您添加到controllerAs: 'vm',
您的组件和 ng-click='refresh()
ng-click='vm.refresh()
所以你的组件应该是这样的:
myApp.component('refreshComponent', {
template:"<button class='btn btn-lg btn-info' ng-click='vm.refresh()' >Refresh </button>",
controllerAs: 'vm',
controller: function RefreshController($scope, $element, $attrs) {
var vm = this;
vm.refresh = function(){
console.log("How to get here?")
location.reload();
}
}
});
提示1:
如果您使用vm
,则根本不需要$scope
。埃:
function RefreshController($element, $attrs)
提示2:
如果你去混淆你的代码,值得用来$inject
避免意外行为:
myApp.component('refreshComponent', {
template:"<button class='btn btn-lg btn-info' ng-click='vm.refresh()' >Refresh </button>",
controllerAs: 'vm',
controller: RefreshController
});
function RefreshController($element, $attrs) {
var vm = this;
vm.refresh = function(){
console.log("How to get here?")
location.reload();
}
}
RefreshController.$inject = ['$element', '$attrs'];
推荐阅读
- laravel - Laravel 异常抛出
- python - 合并嵌套字典列表
- python - 删除收盘价
- visual-studio - Visual Studio Code 的终端中是否有“全选”的键盘快捷键?
- android - 多个模块中的Android DataBinding自定义适配器
- c# - 如何在 gRPC 通信中的 proto 3 有效负载中添加接口和类
- ruby-on-rails - 如何通过猴子补丁添加模型属性字段?
- azure - Azure Devops - 如何从发布管道选项中的下拉列表中添加额外的部署类型
- windows - 在 Windows 上安装 Ubuntu
- java - 将输出流传递给 javax.ws.rs.core.ResponseBuilder