index.html

 <body ng-controller="StoreController as s">
  <h1 ng-click="s.changeValFunc()">{{s.carname}}</h1>
  <h2>{{s.carname}}</h2>
  </body>


app.js

var app = angular.module('store', []);
app.controller('StoreController', function() {
    this.carname = "Volvo";
    this.changeValFunc = function(){
        this.carname="BMW";
    }
});


单击h1标签会将h1和h2的{{carname}}更改为BMW。是不是“ this”是指被单击的当前元素。对如何在视图之间共享控制器属性感到困惑。

最佳答案

控制器功能用new实例化。这意味着它的工作方式如下:

function StoreController() {
    this.carname = "Volvo";
    this.changeValFunc = function () {
        this.carname="BMW";
    }
};

var s = new StoreController();

console.log(s.carname); // Volvo


视图中的s是对实例化的StoreController的引用,该实例具有这些属性,因为您将它们放在构造函数中。您可能需要查看How does the "this" keyword work?以获得详细信息。

07-24 17:00