1

我有一个简单的 javascript 函数display(str),我想在里面调用它ng-if。此功能不在控制器范围内

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;
}

小提琴

4

3 回答 3

1

您可以像这样在 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

于 2016-08-11T06:14:04.180 回答
0

如果它们都在同一个文件中,您可以使用范围分配显示方法。

例子 -

myApp.controller('mainController',function($scope){
$scope.display = display;
});
于 2016-08-11T06:58:11.623 回答
0

您可以使用$window对象来访问角度应用程序中的全局变量。

参考:https ://docs.angularjs.org/api/ng/service/$window

小提琴: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;
}
于 2016-08-11T06:44:21.060 回答