javascript – 断言失败:你必须使用Ember.set()将属性([object Object])设置为`[object Object]`
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 断言失败:你必须使用Ember.set()将属性([object Object])设置为`[object Object]`,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1922字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 断言失败:你必须使用Ember.set()将属性([object Object])设置为`[object Object]`](/upload/InfoBanner/zyjiaocheng/767/b9cea0c791804e069e2bf10476669cbd.jpg)
我正在尝试集成我正在使用EmberJS构建的Javascript库.
几乎工作集成的示例:
https://github.com/pubnub/open-chat-framework/blob/ember/examples/ember
该库返回一个包含许多嵌套对象的对象.该库基于网络事件,因此子对象在没有用户输入的情况下定期更新.可以收听的更新的火灾事件.
这会导致EmberJS出现问题,因为Ember需要通过我的库不使用的Ember.set()来完成每个属性更新.
该库是一个通用的JS库,因此我拒绝为其添加Ember特定代码.我想知道如何在不重写我的库的情况下解决上述错误.
如何以Ember想要的方式包装基于事件的库?我之前尝试过全局和Ember服务.
在其他示例中,我看到人们用Ember特定代码包装库的每个方法.这似乎是重复的.
是否可以手动告诉Ember对根对象的更改并让Ember忽略所有其他更改?意思是,我可以在没有观察到变化的情况下,并在事情发生变化时手动告诉余烬吗?
该库包括一个根事件发射器,该发送器通知树中任何对象的所有更改.
ember-cli: 2.11.1
node: 6.7.0
os: darwin x64
解决方法:
您不需要更改您创建的真棒库.
每个人都想使用它,应该以ember的方式使用它.
只需要改变这样的控制器:
import Ember from 'ember';
export default Ember.Controller.extend({
OCF: null,
me: null,
messages: [],
messageInput: '',
init: function() {
this._super(...arguments);
// test
let OCF = window.OpenChatFramework.create({
rltm: {
service: 'pubnub',
config: {
publishKey: 'pub-c-07824b7a-6637-4e6d-91b4-7f0505d3de3f',
subscribeKey: 'sub-c-43b48ad6-d453-11e6-bd29-0619f8945a4f',
restore: false
}
},
globalChannel: 'ocf-demo-ember-2'
});
this.set('OCF', OCF);
// create a user for myself and store as ```me```
let me = this.get('OCF').connect(new Date().getTime());
this.set('me', me);
this.get('me').plugin(window.OpenChatFramework.plugin.randomUsername(this.get('OCF').globalChat));
this.get('OCF').globalChat.on('message', (payload) => {
console.log(payload)
this.get('messages').pushObject(payload);
});
},
actions: {
sendChat: function() {
let messageInput = this.get('messageInput');
if(messageInput) {
this.get('OCF').globalChat.send('message', {
text: messageInput
});
Ember.set(this, 'messageInput', '');
}
return false;
}
}
});
内容总结
以上是互联网集市为您收集整理的javascript – 断言失败:你必须使用Ember.set()将属性([object Object])设置为`[object Object]`全部内容,希望文章能够帮你解决javascript – 断言失败:你必须使用Ember.set()将属性([object Object])设置为`[object Object]`所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。