这是关于Angular2
我如何在非表格元素上听取事件(如Click)<li>?
边一个bar.html
<div class="col-sm-3 col-md-2 sidebar">
{{title}}
<ul class="nav nav-sidebar">
<li *ng-for="#collection of collections" (click)="liClicked(this)">
<a href="#">{{ collection }}</a>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
SideBarComponent
function SideBarComponent(){
this.title = "Collections";
this.collections = ["Collection-1", "Collection-2", "Collection-3", "Collection-4", "Collection-5"];
this.liClicked = function(el){
alert('a');
}
}
SideBarComponent.annotations = [
new angular.ComponentAnnotation({
selector:'side-bar'
}),
new angular.ViewAnnotation({
templateUrl: 'templates/side-bar.html',
directives:[angular.NgFor]
})
];
Run Code Online (Sandbox Code Playgroud)
这里要注意的一点是,如果我用<a>side-bar.html 替换<button>标签,那么click事件就可以了.但由于某种原因,当我(click)向<li>元素添加处理程序时,它不起作用.
这是一个有趣且奇怪的问题.
首先我创建了Cordova项目locally.我没用Bd.运用
cordova create test com.test.project.story "Test"
哪个成功了!
然后我添加了android平台,使用
cordova platform add android
工作顺利.
然后我使用了建立项目
cordova build
又来了.
我从Eclipse打开项目并在模拟器上运行它.工作得当.
然后我想到在我的项目中使用添加一些插件
cordova plugin add org.apache.cordova.file
cordova plugin add org.apache.cordova.media
Run Code Online (Sandbox Code Playgroud)
删除了android平台并再次添加了该平台.然后在模拟器上构建并运行项目.
屏幕Connecting to device永远被卡住了.
我重新检查,如果我使用正确cordova.js的Android平台.这是正确的,它说
// Platform: android
// 3.5.0
Run Code Online (Sandbox Code Playgroud)
检查了ADB日志,并且有很多可疑的事情正在发生.
D/CordovaWebViewClient( 1581): onPageFinished(file:///android_asset/www/index.html)
D/CordovaActivity( 1581): onMessage(onPageFinished,file:///android_asset/www/index.html)
D/CordovaActivity( 1581): onMessage(spinner,stop)
D/TilesManager( 1581): new EGLContext from framework: 2a1a2a10
D/GLWebViewState( 1581): Reinit shader
D/dalvikvm( 270): GC_CONCURRENT freed 322K, 46% free 9831K/17991K, paused 813ms+21ms, total …Run Code Online (Sandbox Code Playgroud) 我正在动态创建一些DOM元素,比如
var anchorElement = jQuery('<a />',{text:property.text});
var liElement = jQuery('<li />',{"class":"navlink_"+i,id:"navlink_"+i});
anchorElement.on('click',property.fnctn);
liElement.append(anchorElement);
parentID.append(liElement);
Run Code Online (Sandbox Code Playgroud)
propertyJSON对象在哪里.
property.text是我想要放入锚元素的文本.(工作良好)
我想将click事件处理程序附加到该锚元素.需要绑定到该元素的函数在JSON中指定,我们可以像访问它一样访问它
property.fnctn
Run Code Online (Sandbox Code Playgroud)
以下行应将事件处理程序绑定到anchor元素.
anchorElement.on('click',property.fnctn);
Run Code Online (Sandbox Code Playgroud)
这不起作用,所以我尝试将其转换为字符串,
anchorElement.on('click',property.fnctn.toString());
Run Code Online (Sandbox Code Playgroud)
没有成功......
当我单击此链接时,错误将记录在控制台中
该对象没有方法'apply'.是什么原因...???
我可以通过轻微的工作来实现它
anchorElement.attr('onclick',property.fnctn+"()");
Run Code Online (Sandbox Code Playgroud)
上面的语句有效,但我想知道为什么.on()API不起作用.
谢谢:)AÐitya.
我正在学习Node.js,我已经创建了这个简单的http服务器.
var http = require('http');
var server = http.createServer(function(req,res){
console.log('request accepted');
res.end();
});
server.listen(3000,function(){
console.log("Server listening on port #3000");
});
Run Code Online (Sandbox Code Playgroud)
它工作正常,但当我访问http://localhost:3000/控制台日志request accepted事情两次.简而言之,如果我理解正确,请求会被收到两次.
这是正确的行为还是我在这里做错了什么?
