EmberJS - 在创建对象后添加绑定
EmberJS - Adding a binding after creation of object
我正在尝试将对象的属性绑定到绑定在 ArrayController 中的属性。我希望所有这些都发生在对象已经创建并添加到 ArrayController 之后。
这是一个小提琴,其中包含我想要实现的目标的简化示例。
我想知道我是否在作用域方面遇到问题 - 我已经尝试绑定到全局路径(即"App.objectTwoController.objectOne.param3")以设置绑定。我也尝试直接绑定到 objectOneController (这不是我想做的,但尝试它只是为了看看它是否有效),但仍然不起作用。
对我做错了什么有什么想法吗?提前感谢您抽出宝贵时间查看这篇文章。
所以在下面的示例中(我稍微简化了它,但同样的原则适用)......下面的方法最终在"objectTwo"上而不是在"objectTwoController"上查找"objectOne"。
var objectTwoController: Em.Object.create({
objectOneBinding: 'App.objectOne',
objectTwoBinding: 'App.objectTwo',
_onSomething: function() {
var objectTwo = this.get('objectTwo');
objectTwo.bind('param2', Em.Binding.from('objectOne.param3'));
}.observes('something')
});
问题是你不能在两个无相对对象之间绑定。 如果你在 ember 中查看 "connect" 方法,你会发现它只需要一个引用对象 (this) 来观察两条路径(对于您的示例和 ember-pre-1.0 版本中的 9.8.1 也是如此)。
你几乎没有选择(至少我能想到)。
首先:您可以告诉对象彼此,然后相对路径将开始工作。 这实际上会给"objectTwo"一个在绑定路径时要引用的对象。
....
objectTwo.set('objectOne', this.get('objectOne');
....
第二:您可以添加自己的观察器/计算属性,以使两者保持同步(但它更详细一些)。 你也许能够完成一些非常光滑的东西,但这可能很难。 甚至可以编写自己的绑定(如转换),以允许您绑定两个不相关的对象,只要您有指向这两个对象的路径。
_param3: function(){
this.setPath('objectTwo.param2', this.getPath('objectOne.param3');
}.observes('objectOne.param3')
您可以动态地制作这些,而不需要预定义它们......
第三:简单地使它们成为全球路径;"App.objectOneController.content.param3"应该作为绑定"_from"路径(但不确定这对实际应用程序有多大帮助,因为对于较大的应用程序,我个人不喜欢全局的所有内容)。
编辑:设置完整路径时。 请确保等到当前周期结束再获取值,因为在刷新所有内容之前,绑定并不总是更新。 这意味着,您的警报消息需要包装在 Ember.run.next 中,否则您将看不到更改。
- 在何处和何时添加具有数据绑定的元素
- 动态添加/复制表单时绑定到表单提交事件
- EmberJS - 在创建对象后添加绑定
- 主干.js绑定到集合“添加”呈现视图两次
- 动态地向可观察数组中的特定项添加绑定(例如hasfocus)
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 角度指令:绑定'鼠标悬停'事件添加到元素
- 淘汰MVC,绑定模型&将对象添加到模型中
- 如果移除并重新添加DOM元素,则ng单击绑定丢失
- 使用双向绑定将对象从角度视图动态添加/创建到控制器的数组
- 正在删除使用绑定添加的事件侦听器
- 取消绑定由加载jQuery'的外部脚本添加的事件;s的getScript函数
- 在knocket js中应用绑定后,向视图模型添加新属性
- 如何在Jquery中移除和添加OR绑定和取消绑定点击事件
- 将数据绑定添加到引导程序下拉列表
- 使用 Knockout.js 在文本区域中添加数据绑定和静态文本
- AngularJS 如何动态添加 HTML 并绑定到控制器
- 将 jQuery.animate() 添加到 Knockout.js 自定义绑定中
- 反应:将数组绑定到动态添加的字段
- jQuery插件-如何添加/绑定事件