Javascript 我可以把ng click指令放在JS文件而不是HTML文件中吗?我应该怎么做?

Javascript 我可以把ng click指令放在JS文件而不是HTML文件中吗?我应该怎么做?,javascript,jquery,html,angularjs,angularjs-ng-click,Javascript,Jquery,Html,Angularjs,Angularjs Ng Click,JS代码: var nameApp = angular.module('nameApp', []); nameApp.controller('NameCtrl', function($scope) { $scope.names = ['Larry', 'Curly', 'Moe']; $scope.removeName = function(name) { var i = $scope.names.indexOf(name); $scope.na

JS代码:

var nameApp = angular.module('nameApp', []);
nameApp.controller('NameCtrl', function($scope) {
    $scope.names = ['Larry', 'Curly', 'Moe'];

    $scope.removeName = function(name) {
        var i = $scope.names.indexOf(name);
        $scope.names.splice(i, 1);
    };
});
HTML代码:

<html ng-app="nameApp">
    <body ng-controller="NameCtrl">
        <ul>
            <li ng-repeat="name in names">{{name}}
                <a href="" ng-click="removeName(name)">remove</a>
            </li>
        </ul>
    </body>
</html>

可以使用angular.element()代替$()

示例代码:

<ul>
 <li ng-repeat="name in names">{{name}}
       <a href="" id="clickme" ng-click="removeName(name)">remove</a>
  </li>
</ul>

你可以通过
ngbindhtml
来实现,但是我的示例看起来很疯狂。但它在html端不使用
ng单击
,对我有效

var nameApp = angular.module('nameApp', []);
nameApp.controller('NameCtrl', function($scope) {      

    $scope.names = ['Larry', 'Curly', 'Moe'];

        $scope.ValOfRept = [];
        for (var x = 0; x < $scope.names.length; x++) {
            var element = '<a href=\"javascript:void(0);\" ng-click=\"removeName(valofrept)\">remove</a>';
            var obj = { "name": $scope.names[x], "element": element };
            $scope.ValOfRept.push(obj);
        }


        $scope.removeName = function (name) {
            var i = $scope.names.indexOf(name);
            $scope.ValOfRept.splice(i, 1);
        };

});
nameApp.filter('to_trusted', ['$sce', function ($sce) {
     return function (text) {
         return $sce.trustAsHtml(text);
     };
 }]);;
var nameApp=angular.module('nameApp',[]);
控制器('NameCtrl',函数($scope){
$scope.names=['Larry','Curly','Moe'];
$scope.ValOfRept=[];
对于(变量x=0;x<$scope.names.length;x++){
var元素=“”;
var obj={“name”:$scope.names[x],“element”:element};
$scope.valofret.push(obj);
}
$scope.removeName=函数(名称){
var i=$scope.names.indexOf(name);
$scope.ValOfRept.拼接(i,1);
};
});
nameApp.filter('to_trusted',['$sce',函数($sce){
返回函数(文本){
返回$sce.trustAsHtml(文本);
};
}]);;
Html


{{valofrept.name}

“我想知道是否可以将ng click指令放在JS文件而不是HTMl文件中…”

指令的确切位置是html no js。当您使用jquery时,您的html代码如下

<input type="button" value="x" id="test" onclick="$(this).removeName(name)"/>

在js中,应用您想要的逻辑

在角度上非常相似。ng click相当于onclick。在html代码中有指令ng click,在控制器中应用逻辑。我不明白你为什么要把它混在一起


简而言之,您不需要这样做,也不可以这样做。

我更喜欢使用
ng click
,而不是用jQuery方式绑定事件

但是,正如您所问:您可以插入控制器的
$元素
,并在其上绑定
on
事件,请参阅:

var-app=angular.module(“单击“,[]);
应用程序控制器(“ctrl”,函数($scope,$element){
$element.on(“单击”,函数(){
警报(“单击!”);
});
});


对于这种琐碎的情况,情况并非如此。您需要一个指令来替换已经正常工作的core
ng click
指令。如果你的问题更复杂,你就过于简化了你为什么要这样做的问题?Ng click完全符合您的要求。为什么要指令指令?你可以这么做,但你需要一些疯狂的编码。例如,将html元素放入数组中,并将其绑定到ng Repeat。非常感谢您的帮助@利安尼斯,不客气!但是,它到底起作用了吗?如果是这样的话,你可以考虑把这个答案当作正确的答案,点击它的复选标记,YUP,它起作用了。感谢您对本网站的使用指导。对号!再次查看您的帖子。。。html是否仍应具有
ng click
$scope.removeName()应该从哪里开始从中获取
名称
参数?
var nameApp = angular.module('nameApp', []);
nameApp.controller('NameCtrl', function($scope) {      

    $scope.names = ['Larry', 'Curly', 'Moe'];

        $scope.ValOfRept = [];
        for (var x = 0; x < $scope.names.length; x++) {
            var element = '<a href=\"javascript:void(0);\" ng-click=\"removeName(valofrept)\">remove</a>';
            var obj = { "name": $scope.names[x], "element": element };
            $scope.ValOfRept.push(obj);
        }


        $scope.removeName = function (name) {
            var i = $scope.names.indexOf(name);
            $scope.ValOfRept.splice(i, 1);
        };

});
nameApp.filter('to_trusted', ['$sce', function ($sce) {
     return function (text) {
         return $sce.trustAsHtml(text);
     };
 }]);;
<div ng-repeat="valofrept in ValOfRept">
        {{valofrept.name}}
      <div ng-bind-html="valofrept.element  | to_trusted"></div>
        <br />
    </div>
<input type="button" value="x" id="test" onclick="$(this).removeName(name)"/>