双向绑定不会;我不在ES6工作
Two-way binding doesn't work in ES6
考虑这个代码
export class TestController {
constructor() {
this.socket = io();
this.movies = {};
this.socket.emit('getAllMovies', '');
this.socket.on('allMovies', this.listMovies.bind(this));
}
listMovies(data){
this.movies = JSON.parse(data);
console.log(this.movies);
}
}
和查看(使用controllerAs语法)
<div>
{{ctrl.movies}}
</div>
当我打开页面时,它显示{},然后是来自websocket收入的数据(正确),等待this.movies,什么都没有改变。看来双向竞价被打破了。有人知道为什么吗?
问题不在于w/ES6,而是因为角度变化检测机制不知道您的套接字,并且必须运行摘要循环。
看看这个教程。这里的套接字io是用一个服务包装的,该服务在每个套接字事件上手动调用$apply。
app.factory('socket', function ($rootScope) {
var socket = io.connect();
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
//NB!
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
}
};
});
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- ES6构造函数返回基类的实例
- jQuery UI自动完成突然停止工作
- 如何在下面的ES6循环中获得前面的文本
- 双向绑定不会;我不在ES6工作
- 使用 Babel 将 ES6 模块转换为 ES5 AMD 模块,无法按预期工作
- ES6的解构赋值在最新的Node中不能工作
- ES6通过jspm错误在Firefox, Edge, Vivaldi,但工作在Chrome, Opera
- 通过ES6 Katas工作,扩展承诺
- React ES6类转换不工作
- 如何es6模块加载工作
- ES6下的webcomponents-lite在ie11和ie10下无法工作
- .call应该如何为ES6箭头函数工作(根据标准)
- 如何让ES6/2015导入/模块在浏览器中工作
- React组件不能在ES6上工作
- ES6导入和要求不能正常工作与gulp/browserify/babelify
- ES6中的导入/导出是如何工作的?
- es6如何让console.log在if语句中工作?
- 将 ES6 库转换回“工作”JavaScript
- React ES6组件继承:工作,但不推荐