Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 究竟是什么';这';在AngularJS控制器中是什么意思?_Javascript_Angularjs_Model View Controller_Controller_Angularjs Controller - Fatal编程技术网

Javascript 究竟是什么';这';在AngularJS控制器中是什么意思?

Javascript 究竟是什么';这';在AngularJS控制器中是什么意思?,javascript,angularjs,model-view-controller,controller,angularjs-controller,Javascript,Angularjs,Model View Controller,Controller,Angularjs Controller,index.html <body ng-controller="StoreController as s"> <h1 ng-click="s.changeValFunc()">{{s.carname}}</h1> <h2>{{s.carname}}</h2> </body> 单击h1标记将h1和h2的{{carname}}更改为BMW。“this”不是指当前正在单击的元素吗。我对视图之间如何共享控制器属性感到

index.html

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

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

控制器功能是通过
新建
实例化的。这意味着它的工作原理如下:

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

var s = new StoreController();

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

视图中的
s
是对实例化的
StoreController
的引用,它具有这些属性,因为您将它们放在构造函数中。您可能想查看详细信息。

控制器函数是用
new
实例化的。这意味着它的工作原理如下:

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

var s = new StoreController();

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

视图中的
s
是对实例化的
StoreController
的引用,它具有这些属性,因为您将它们放在构造函数中。您可能需要查看详细信息。

在您的情况下,这是指控制器本身

因此,可以使用访问该控制器中的任何属性

this.attribute
在本例中,将控制器“分配”给父元素

<body ng-controller="StoreController as s">

这意味着您要为元素体创建一个StoreController的实例

更改属性carname可以更改整个控制器的属性

如果您对OO编程知之甚少,您可以将控制器视为一个类,并以此引用该类的实例

对于您的情况也是如此,在javascript中,这个有时会有一些奇怪的行为

正如deceze所说,你可以看看一些帖子,它们解释了这个在JS中是如何工作的


希望这对您有所帮助

在您的情况下,这指的是控制器本身

因此,可以使用访问该控制器中的任何属性

this.attribute
在本例中,将控制器“分配”给父元素

<body ng-controller="StoreController as s">

这意味着您要为元素体创建一个StoreController的实例

更改属性carname可以更改整个控制器的属性

如果您对OO编程知之甚少,您可以将控制器视为一个类,并以此引用该类的实例

对于您的情况也是如此,在javascript中,这个
有时会有一些奇怪的行为

正如deceze所说,你可以看看一些帖子,它们解释了这个在JS中是如何工作的


希望这有帮助

是的,我知道了。谢谢只是在OO编程中,我们说新的构造函数属于一个类。这里我们有一个函数。类在这里哪里合适?@mustafa Javascript没有类,它只有对象和函数。“类”行为是通过
this
new
关键字和
prototype
的行为实现的。它和基于类的OO一样是“OO”,可以说更是如此,因为一切都是对象。这不是一个合适的地方来扩展,但是,关于这个已经有足够多的讨论了。是的,现在我知道该搜索什么了。是的,我知道了。谢谢只是在OO编程中,我们说新的构造函数属于一个类。这里我们有一个函数。类在这里哪里合适?@mustafa Javascript没有类,它只有对象和函数。“类”行为是通过
this
new
关键字和
prototype
的行为实现的。它和基于类的OO一样是“OO”,可以说更是如此,因为一切都是对象。这不是一个合适的地方来扩展,但是,关于这个已经有足够多的讨论了。是的,现在我知道该搜索什么了。谢谢你的参考。这篇文章很有帮助。谢谢你的推荐。这篇文章很有帮助。可能重复的可能重复的