angularjs + bootstrap,模板函数中的btn

问题描述 投票:1回答:1

我正在学习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中初始化]

javascript angularjs angular-components
1个回答
0
投票

请确保已将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();
      }
    }
  }); 

Tip 1:

如果使用vm,则根本不需要$scope。 A.e。:

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'];
© www.soinside.com 2019 - 2024. All rights reserved.