gpt4 book ai didi

ember.js - EmberJS 绑定(bind)不起作用

转载 作者:行者123 更新时间:2023-12-03 09:29:28 25 4
gpt4 key购买 nike

我刚开始学习 Ember.js,并在 http://emberjs.com/ 阅读文档.在绑定(bind)部分,我只是复制并粘贴了以下代码,并在 Chrome 浏览器上执行了它。绑定(bind)数据 (App.husband.get('householdIncome')) 总是返回“undefined”。你知道为什么吗?我想知道为什么我的代码不起作用。

----- HTML 代码 ------

<html>
<body>
<script src="js/libs/jquery-1.7.2.js"></script>
<script src="js/libs/ember-0.9.6.js"></script>
<script src="js/app.js"></script>
</body>
</html>

----- app.js ------

var App = Ember.Application.create();
App.wife = Ember.Object.create({
householdIncome: 80000
});

App.husband = Ember.Object.create({
householdIncomeBinding: 'App.wife.householdIncome'
});

console.log(App.wife.get('householdIncome')); // 80000
console.log(App.husband.get('householdIncome'));// expected 80000

-------- 结果输出------------

80000
undefined

最佳答案

您需要将 Em.run.sync(); 放在 .get() 之前。原因是Ember的连接绑定(bind)属性的RunLoop还没有运行完。通过使用 Em.run.sync();,您可以强制 RunLoop 在后面的任何代码之前运行完成。这可能看起来很不方便,但通常情况下,在声明具有绑定(bind)属性的对象后,您真的不需要这么快就调用 .get() ,因为 RunLoop 将处理最终将这些属性连接到正确显示这些值的 Handlebars 模板.但在某些情况下,您需要立即绑定(bind)这些属性,在这种情况下您可以使用 Em.run.sync()

请参阅此 jsfiddle:http://jsfiddle.net/edwG6/

此外,您会在 http://emberjs.com 上注意到一个非常相似的示例在第一个绑定(bind)部分。注意下面的注释://Later, after Ember has resolved bindings...

关于ember.js - EmberJS 绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10134158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com