2016-08-11 1 views
0

У меня есть простая функция javascript display(str), которую я хочу вызвать внутри ng-if. Эта функция находится вне сферы управленияКак вызвать функцию javascript из ng-if вне области контроллера-AngularJS

HTML

<body ng-app="myApp"> 
    <div id="mycntrl" ng-controller="mainController"> 
     <select id="selectid1" name="selectid1" ng-model="angularselect"> 
     <option ng-value=""></option> 
     <option ng-value="val1">Value 1</option> 
     <option ng-value="val2">Value 2</option> 
     </select> Value : {{angularselect}} 
    <div ng-if="display(angularselect) === true"> 
    <p> 
     Returned true 
    </p> 
    </div> 
    </div> 
</body> 

JS

var myApp = angular.module('myApp',[]); 

myApp.controller('mainController',function($scope){ 

}); 

function display(str) 
{ 
    console.log('Javascript function called with argument '+str); 
    return true; 
} 

FIDDLE

ответ

0

Вы можете сделать глобальную функцию в модуле app.run, как это.

myApp.run(function($rootScope){ 
     $rootScope.display = function(str) { 
      console.log('Javascript function called with argument '+str); 
      return true; 
     } 
    }) 

и использовать его в HTML коде следующим образом:

<div ng-if="$root.display(angularselect) === true"> 

здесь скрипка JsFiddle

0

Вы можете использовать $window объекта для доступа к глобальной переменной в угловом приложении.

Ссылка: https://docs.angularjs.org/api/ng/service/$window

Fiddle: https://jsfiddle.net/7kLr89cc/4/

var myApp = angular.module('myApp',[]); 

myApp.controller('mainController',function($scope,$window){ 
    $scope.displayHere = function(str){ 
     return $window.display(str); 
    }; 
}); 

function display(str) 
{ 
    console.log('Javascript function called with argument '+str); 
    return str; 
} 
0

Вы можете назначить метод отображения с помощью рамки, если они оба находятся в одном файле.

Пример -

myApp.controller('mainController',function($scope){ 
$scope.display = display; 
});