2016-09-10 2 views
1

У меня есть области видимости переменных внутри функции в контроллере, который не отображается в HTMLпеременную сферу внутри функции в контроллере не отображается в HTML

app.controller('testController', function($rootScope, $http, $scope, 
    $uibModal, $window) { 

$scope.show = function(dashboard) { 
    $scope.test="test"; 
    $scope.option.testVisible=true; 
    } 
}) 

и HTML

<div ng-controller="testController"> 
<div>{{test}}</div> 

этот <div>{{test}}</div> спрятан первоначально ng-style="{'visibility': option.testVisible?'visible':'hidden'}", а затем установлен в значение true в $scope.show

html не отображает значение $scope.test. То же самое работает, если $scope.test определяется вне функции и внутреннего контроллера.

ответ

-2

Ваше значение не отображается по причине, по которой оно находится внутри функции. Если вы посмотрите внимательно, то вы можете увидеть, что функция $scope.show не вызывается нигде в коде. Это просто определено.

Теперь, если вы не хотите менять текущий код, у вас есть два способа добиться того, чего вы хотите.

Звоните $scope.show Функция в контроллере сразу после ее определения.

app.controller('testController', function($rootScope, $http, $scope, 
    $uibModal, $window) { 

$scope.show = function(dashboard) { 
    $scope.test="test"; 
    } 

$scope.show(); 
}) 

Во-вторых вы можете вызвать ту же функцию $scope.show из HTML с помощью ng-init тега.

<div ng-controller="testController" ng-init="show()"> 
<div>{{test}}</div> 

Оба способа будет вызывать функцию $scope.show и поставит переменную тест в $scope переменной. И он будет отображаться на вашей странице.

В этом заключается разница между назначением переменной в функции внутри контроллера или только внутри контроллера.

+0

@ downvoters хотят прокомментировать? –

Смежные вопросы