Javascript 我可以把ng click指令放在JS文件而不是HTML文件中吗?我应该怎么做?
JS代码: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
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(“单击”,函数(){
警报(“单击!”);
});
});代码>
对于这种琐碎的情况,情况并非如此。您需要一个指令来替换已经正常工作的coreng 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)"/>