2017-04-24 50 views
3

我需要在angularjs中运行此代码。如何在angularjs中使用javascript代码

当我尝试执行这个模型功能它没有运行。

它甚至没有显示警报或控制台。

那么,什么是angularjs

这里使用这个脚本文件的方式是我在example.html的

<div> 
{{sample}} 
</div> 
<div><button ng-click="name()"></div> 
<script> 
function name(){ 
alert("text"); 
} 
</script> 

回答

5

如果我正确理解您的要求,

您需要执行一个单独的Java脚本功能。

对于一个角度的应用程序,它不是一个正确的方式来运行javascript超出角度范围。

任何如果它是绝对requried你可以尝试用onclick="name()"

var app = angular.module("app", []); 
 

 
app.controller('exampleController', [function() { 
 
    this.myFunction = function() { 
 
    alert("Iam from angular controller"); 
 
    } 
 
}]); 
 

 
function myFunction() { 
 
    alert("Iam from javascript"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
 

 
<div ng-app="app" ng-controller="exampleController as ctrl"> 
 
    <button ng-click="ctrl.myFunction()">click me</button> 
 
    <button onclick="myFunction()">click me</button> 
 
</div>

更换ng-click="name()" @Update

如果你想使用Java脚本库,函数或在angularjs中的常量我建议的方法是添加一个工厂或服务,以确保库或函数或con如上solution.Here IAM添加片断基于上述溶液stants但它不是简单

有使用以下计算策略的一些优点: -

  1. 它将添加依赖注入proprely这是一个基本在angularjs后面的概念

  2. 它将确保在启动应用程序之前存在外部函数。

  3. 它将增加更多的灵活性和角度的Java脚本功能的控制。

  4. 以下代码段将删除的功能的外部访问和保护应用程序
  5. 这是您可以在其中添加外部库如jQuery loadash或任何JS库到你的代码的最佳方式

(function() { 
 
    function exampleController(myFunction) { 
 
    this.myFunction = function() { 
 
     alert("Iam from angular controller"); 
 
    } 
 
    this.externalJSFunction = myFunction 
 
    }; 
 
    exampleController.$inject = ['myFunction']; 
 
    
 
    function myFunctionFactory($window) { 
 
    if (!$window.myFunction) { 
 
     throw new Error("myFunction is not defined"); 
 
    } 
 
    this.myFunction = $window.myFunction; 
 
    /* You can add 
 
    $window.myFunction = undefined; 
 
    if the function ($window.myFunction) is not required by 
 
    some other library or function in window scope 
 
    in such cases it gives added security by 
 
    restricting access of this from window scope and dis allows modification 
 
    */ 
 
    return this.myFunction; 
 
    } 
 
    myFunction.$inject = ['$window']; 
 
    
 
    var app = angular.module("app", []); 
 
    app.controller('exampleController', exampleController); 
 
    app.factory('myFunction', myFunctionFactory); 
 

 
})(); 
 

 
function myFunction() { 
 
    alert("Iam from javascript"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="exampleController as ctrl"> 
 
    <button ng-click="ctrl.myFunction()">click me For angular Function</button> 
 
    <br/> 
 
    <button ng-click="ctrl.externalJSFunction()">click me For external JS Function </button> 
 
    <br/> 
 
    <button onclick="myFunction()">click me for checking exteranl acess </button> 
 
</div>

2

你的代码应该是这样的....

<!DOCTYPE html> 
 
<html ng-app="plunker"> 
 

 
    <head> 
 
    <meta charset="utf-8" /> 
 
    <title>AngularJS Plunker</title> 
 
    <script>document.write('<base href="' + document.location + '" />');</script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.4.12/angular.js" data-semver="1.4.9"></script> 
 
    <script > 
 
     var app = angular.module('plunker', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name=function(){ 
 
alert("text"); 
 
} 
 
}); 
 

 
    </script> 
 
    </head> 
 

 
    <body ng-controller="MainCtrl"> 
 
    <div> 
 
{{sample}} 
 
</div> 
 
<div><button ng-click="name()">click me</div> 
 
    </body> 
 

 
</html>
代码

你需要给角js cdn第一个然后创建一个模块和控制器如上

+0

不,这不是我期待answer.i问的方式,有没有办法使用Java编写的脚本代码可以在角使用JS html文件@Sa E Chowdary –

2

这是一个示例控制器。

<body ng-app="myApp" ng-controller="myCtrl"> 
    <div> 
    <button ng-click="name()"> 
    </div> 
    <script> 

    var app = angular.module('myApp', []); 
    app.controller('myCtrl', function($scope) { 
     $scope.name = name; 
     function name(){ 
      alert("text"); 
     } 
    }); 
    </script> 
</body> 
+0

这里你还使用angularjs语法我需要在angularJs中使用纯粹的JavaScript代码是可能的吗? @Zohaib Ijaz –

+1

@DeepakVijay AngularJS是JavaScript。你可以在角度内使用纯js。 –

+1

@DeepakVijay Angular是javascript。没有角度就无法实现角度功能。 –

0

您应该能够在html文件中的脚本标记内的角度控制器内运行任何JavaScript。 HTML文件看起来应该更像是这样的:

<!DOCTYPE html> 
<html> 
<head> 
    <title>example</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
</head> 
<body ng-app="app" ng-controller="exampleController as ctrl"> 
     <button ng-click="ctrl.name()">click me</button> 
</body> 
</html> 


<script> 
var app = angular.module("app", []); 

app.controller('exampleController', [function() { 
    this.name = function(){ 
     alert("text"); 
    } 
}]); 
</script> 
2

你可以使用一个指令,这里有一个例子:

//你的JS源

angular.directive('something', [function() { 
    return { 
     restrict: 'A', 
     link: function(scope, element, attrs) { 
      element.bind('click', function() { 
       alert('yup'); 
      }); 
     } 
    }; 
}]); 

//在HTML文件中

<button type="button" something>Click Me!</button> 

这使您可以在您的整个项目重用你的各种代码块/功能很容易。

另一种解决方案

<!DOCTYPE html> 
 
    <html> 
 
    
 
    <head> 
 
     <title>example</title> 
 
     <script data-require="[email protected]*" data-semver="3.1.1" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
 
    </head> 
 
    
 
    <body ng-app="app" ng-controller="exampleController as ctrl"> 
 
     <button ng-click="ctrl.name()">click me to angular</button> 
 
     <button ng-click="name()" class="btn">click me to javascript</button> 
 
     <script> 
 
     var app = angular.module("app", []); 
 
     app.controller('exampleController', [function() { 
 
      this.name = function() { 
 
      alert("angular text"); 
 
      } 
 
     }]); 
 
    
 
     //JQuery Lib must be included your project 
 
     $(document).on('click', '.btn', function() { 
 
      eval($(this).attr('ng-click')); 
 
     }); 
 
    
 
     function name() { 
 
      alert("javascript text"); 
 
     } 
 
     </script> 
 
    </body> 
 
    
 
    </html>

+1

知道了..(Y)感谢您的帮助@Shohel和谢谢 –

相关问题