Javascript AngularJS控制器和方法
我是angularjs的初学者,有一些关于控制器的问题。Javascript AngularJS控制器和方法,javascript,angularjs,Javascript,Angularjs,我是angularjs的初学者,有一些关于控制器的问题。 以下是我的示例控制器: function exampleController($scope) { $scope.sampleArray = new Array(); $scope.firstMethod = function() { //initialize the sampleArray }; $scope.secondMethod = function() { this.
以下是我的示例控制器:
function exampleController($scope)
{
$scope.sampleArray = new Array();
$scope.firstMethod = function()
{
//initialize the sampleArray
};
$scope.secondMethod = function()
{
this.firstMethod();
};
};
以下是我的问题:
- 如何从
调用secondMethod
?我这样做是正确的,还是更好的方式firstMethod
- 如何为控制器创建构造函数?我需要调用调用初始化sampleArray的第一个方法的第二个方法李>
- 如何从html代码中调用特定方法?我找到了ng initialize,但我不知道如何使用它
- 调用方法的方式与声明方法的方式相同:
$scope.secondMethod=function(){
$scope.firstMethod();
};
您也可以从HTML调用它,如下所示:
{{secondMethod()}
但是控制器并没有真正的“构造函数”——它们通常和函数一样使用。但是,您可以将初始化放在控制器函数中,它将像构造函数一样最初执行:
函数示例控制器($scope){
$scope.firstMethod=函数(){
//初始化sampleArray
};
$scope.secondMethod=函数(){
$scope.firstMethod();
};
$scope.firstMethod();
}
使用$scope调用第一个方法
所以
我不太清楚你第二个问题的意思
对于第三个问题,您可以让该方法在控制器上自动“onload”运行,或者通过前端角度绑定运行它
e、 g。
自动运行
function exampleController($scope)
{
$scope.sampleArray = new Array();
$scope.firstMethod = function()
{
//initialize the sampleArray
};
$scope.secondMethod = function()
{
$scope.firstMethod();
};
$scope.secondMethod(); // runs automatically.
};
绑定运行
<div ng-controller="ExampleController"> <!-- example controller set up in namespace -->
<button class="btn" ng-click="secondMethod()">Run Second Method</button>
</div>
运行第二种方法
@Josh和@Christopher已经回答了你的问题,所以我不再重复了
我找到了ng initialize,但我不知道如何使用它:-(
该指令实际上是。有时(例如,如果您开始在应用程序的某些部分中使用Angular,但仍需要动态生成视图/HTML页面服务器端),ng init有时是初始化某些内容的有用方法。例如
<div ng-controller="ExampleCtrl">
<form name="myForm">
<input type="text" ng-model="folder" ng-init="folder='Bob'">
下面是一个需要使用ng init的示例:
我还想提到的是,控制器不是单例的。如果使用ng view,每次转到不同的路由时,都会创建一个新的控制器。与您要离开的视图关联的控制器将被销毁,与您要离开的视图关联的控制器将被执行。因此,“初始化代码”在应用程序运行时,控制器可能会执行多次。例如,如果您访问某个页面,转到其他位置,然后返回,相同的控制器功能(及其“初始化代码”)将执行两次
如果您想让某个东西真正运行一次,请将其放在服务或的config()或run()方法中。(服务是,因此每个服务只实例化一次,因此服务中的初始化代码只运行一次。)我遇到了一个ng init无法避免的例子。有很多关于使用它的警告……使用它肯定是一种使单元测试更困难的黑客行为。但有时你必须做你必须做的事情……在AngularJS的新版本中,$scope不是被弃用了吗?@RaulLuna是的,但答案是4.5年前的。:-)呃。。。好吧,但是在谷歌上寻找答案。我认为值得一提。
<div ng-controller="ExampleCtrl">
<form name="myForm">
<input type="text" ng-model="folder" ng-init="folder='Bob'">