gpt4 book ai didi

ember.js - Emberjs - 禁用和启用文本字段

转载 作者:行者123 更新时间:2023-12-04 17:38:33 25 4
gpt4 key购买 nike

所以我最近在 Em.TextField 中发现了 disabled 属性,但是在我扩展 TextField 并将 disabled 属性设置为 true 之后,我似乎无法重新启用它。

var app = Em.Application.create();
app.randomObj = Em.Object.create({
temp: null
});
app.textField = Em.TextField.extend({
valueBinding: 'app.randomObj.temp',
disabled: true
});

如何使用 Ember 删除 disabled 属性?

最佳答案

您的示例代码存在一些问题,我会解决每个问题,希望我能解决一些问题。

命名约定

首先你应该看看关于 naming conventions 的 Emberist 帖子。 :类应命名为大写,实例应命名为小写 - 应用程序和命名空间的异常(exception)。因此,在您提供的 JSFiddle 中的 comment 中它是 App.controllerApp.ATextField .

将 App 声明为全局变量

您正在创建 Ember.Application 的实例并将其分配给 var app .尽管在使用全局变量时应该小心,但在这种情况下,您应该在全局命名空间上定义您的应用程序,所以它应该是 App = Ember.Application.create();分别window.App = Ember.Application.create(); .通过将应用程序声明为全局变量,您可以使用强大的 绑定(bind) 模板和 JS 代码中的功能。

绑定(bind)

绑定(bind)应该在实例而不是类上声明。我的意思是你不会定义 valueBinding您的App.TextField在您的类定义中,而是将其移至具体实例,例如在模板中。

在您的 comment 中提供的 JSFiddle 中您与 Controller 的绑定(bind)不起作用,因为您没有使用:要创建与特定 Controller /对象/的绑定(bind)...您必须声明要绑定(bind)的属性名称并附加一个 Binding字符串。所以应该是 disabledBinding: 'App.controller.shouldDisable' .

示例

我已经重构了你的代码,见 http://jsfiddle.net/pangratz666/pLpKV/ :

Handlebars :

{{view Ember.TextField
valueBinding="App.tempObj.hold"
disabledBinding="App.controller.shouldDisable"}} {{App.tempObj.hold}}

JavaScript :

App = Em.Application.create();

App.controller = Em.Object.create({
shouldDisable: true
});

App.tempObj = Em.Object.create({
hold: "initial value"
});

// just to illustrate how to define bindings outside of templates,
// we're adding a TextField with bindings setup the same as for the
// template
Ember.TextField.create({
valueBinding: 'App.tempObj.hold',
disabledBinding: 'App.controller.shouldDisable'
}).appendTo('body');

关于ember.js - Emberjs - 禁用和启用文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10523780/

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