1

Я вижу, что почти учебник использует анонимную функцию в AngularJS вместо обычной функции, например, имя функции (para1) {}. См. Эту ссылку: http://www.w3schools.com/angular/tryit.asp?filename=try_ng_controller_propertyПочему всегда используется анонимная функция в AngularJS

Я перехожу к нормальной работе, но она не может работать, пожалуйста, сообщите. Благодарю.

<div ng-app="myApp" ng-controller="personCtrl as main"> 

First Name: <input type="text" ng-model="firstName"><br> 
Last Name: <input type="text" ng-model="lastName"><br> 
<br> 
Full Name: {{main.fullName()}} 

</div> 

<script> 
var app = angular.module('myApp', []); 
app.controller('personCtrl', function($scope) { 
    $scope.firstName = "John"; 
    $scope.lastName = "Doe"; 
    function fullName() { 
     return $scope.firstName + " " + $scope.lastName; 
    }; 
}); 
</script> 
+0

Если вы хотите использовать именованную функцию, вы можете сделать что-то вроде объявить funcion, как и вы, а затем назначить ее как: $ scope. fullName = fullName; –

+0

Да. Я попытался, он может работать, если мы добавим имя функции() {}. Но я должен назначить его в $ scope – AngularJS

ответ

1

Идея $ объем должен иметь объект, где все поля и функции определяются на, так что вы можете ссылаться на поля и функции из шаблона.

Если вы не подключаете функцию к $scope, она не будет видна для углового вызова. Таким образом, контракт заключается в том, что в вашей функции контроллера вы добавляете все, что вам нужно, к объекту $scope, переданному инфраструктурой, и тем самым вы можете позже получить доступ к полям или вызвать функции из вашего шаблона. Все, что вы ссылаетесь в директивах, таких как ng-model или помещено в {{ }}, будет оцениваться угловым, но угловым не известно, что вы имеете в виду под выражением fullName(), как написано в вашей ссылке фрагмента или не находит его в контроллере, когда оно написано как main.fullName().

Подробнее о концепции $scope смотрите на the angular docs on scopes.

+0

У меня есть. Можете ли вы дать мне справочный документ, чтобы я мог больше узнать? – AngularJS

+0

Посмотрите на угловые документы по областям. Я добавил ссылку на мой ответ. –

0

Что вы можете сделать (и это также хорошая практика) состоит в том, чтобы объявить вашу функцию, а затем (возможно, в начале цикла) назначить их в $ scope .. так более ясно, когда вы будете повторно прочитайте его примерно так:

<!DOCTYPE html> 
<html> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<body> 

<div ng-app="myApp" ng-controller="personCtrl"> 

First Name: <input type="text" ng-model="firstName"><br> 
Last Name: <input type="text" ng-model="lastName"><br> 
<br> 
Full Name: {{fullName()}} 

</div> 

<script> 
var app = angular.module('myApp', []); 
app.controller('personCtrl', function($scope) { 
    $scope.firstName = "John"; 
    $scope.lastName = "Doe"; 
    $scope.fullName = fullName; //<-- here you assign it 


    function fullName() { 
     return $scope.firstName + " " + $scope.lastName; 
    }; 
}); 
</script> 

</body> 
</html> 
+0

Спасибо. Этого я хочу. Я также вижу нечто подобное, как вы. – AngularJS

+0

счастлив, если вылечил вас .. если это .. PLZ оценить его .. :-) thnx! –

+0

Я буду оценивать его после того, как моя репутация станет 15. Большое спасибо. Удивительные выходные. – AngularJS