问题标签 [property-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
383 浏览

java - ReadOnlyBooleanWrapper:与 Bindings.or 一起使用时行为不正确

ReadOnlyBooleanWrapper使用 . 绑定两个对象时,我遇到了一个非常奇怪的行为Binding.or。即,当我b1.set(true)对第一个参数进行处理时,结果不正确(仍然是错误的)。

这是一个简单的单元测试(失败):

请注意,相同的测试可以SimpleBooleanProperties正常工作:

我可能在这里遗漏了一些要点并滥用了属性,因为我无法想象实现中会出现这样的错误!:)

感谢任何想法如何解释它!

更新:

您的回答和评论使我走上了正确的轨道:)我还没有解决方案,但我注意到如果我将其绑定orReadOnlyProperties(应该被暴露)而不是包装器本身,那么测试通过:

这让我认为内部可读写属性与只读属性之间的同步以某种方式被破坏了(?)

从有关文档的文档中ReadOnlyBooleanWrapper

该类提供了一个方便的类来定义只读属性。它创建了两个同步的属性。一个属性是只读的,可以传递给外部用户。另一个属性是可读写的,只能在内部使用。

0 投票
1 回答
1485 浏览

java - 列表更改后 JavaFX 更新 FlowPane

因此,在我第一次使用 JavaFX 后,我被分配了一个我认为规模很大的项目,因为这只是我第二次使用 JavaFX。我必须创建一个具有基本功能的相册:添加图像、删除图像、按标题/描述/位置排序、编辑标题、拍摄日期、描述和位置的能力。好消息:我已经完成了所有这些事情,但其中一件事情已经完成。

删除照片,或者更确切地说,在从阵列中删除照片后将其从屏幕上删除imageData已被证明是复杂的。我很确定这是由于我的组织方式。我尝试为班级制作自己的“changedProperty”Album并从源头上观察它,但显然我以某种方式把它搞砸了,或者它不像我想象的那样工作。

所以那是一个失败。我也尝试了一个,ObservableList但是因为它是在源代码中创建的,所以我不能obsList.remove()在我的Album班级中。同样,我可能只是错误地实施了它。

所以只是重申一下-我可以从图片中删除图像,ArrayList imageData但它们会留在图库中FlowPane

源码.java

专辑.java

图像数据.java

DisplayEditDetail.java

0 投票
1 回答
489 浏览

java - 通过表达式或某种解决方法的双向属性绑定

我对属性绑定比较陌生,我正在寻找一些关于如何解决设计问题的高级建议,我将尝试在这里描述一个简单的例子。

问题描述

此示例中的目标是允许用户在可平移和可缩放的 2D 空间中以交互方式指定框/矩形区域。描绘盒子的 2D 屏幕空间映射到 2D“真实空间”(例如电压与时间的笛卡尔空间,或 GPS,或其他)。用户应该能够随时垂直/水平缩放/平移他的视口,从而改变这两个空间之间的映射。

用户通过拖动边框/角来指定其视口中的矩形,如在此演示中:

在用户指定矩形后,其坐标(在实际空间中)被传递到程序的不同部分或由程序的不同部分读取。

我的理由

我的第一直觉是使用 JavaFX 节点中内置的缩放/平移属性来实现映射,但我们希望边框和手柄具有一致的大小/外观,而不管缩放状态如何;缩放应该只扩大概念矩形本身,而不是加厚边框或角手柄。

(在下文中,箭头表示因果关系/影响/依赖关系。例如,A ---> B可能表示属性 B 绑定到属性 A(或者可能表示事件处理程序 A 设置属性 B),并且<----->可能表示双向绑定。尾箭头,例如--+-->可以表示依赖于多个输入 observable 的绑定。)

所以我的问题变成了:我应该做什么?

  • real-space-properties ---+--> screen-space-properties
  • real-space-properties <--+--- screen-space properties
  • 或不同的东西,使用<---->

一方面,我们在屏幕空间中有鼠标事件和渲染矩形本身。根据上面的演示,这主张一个自包含的交互式矩形(我们可以在外部观察(以及如果我们想要的话)操作的屏幕空间位置/尺寸属性)。

另一方面,当用户调整平移/缩放时,我们希望保留矩形在实际空间(而不是屏幕空间)中的属性。这主张使用 pan&zoom-state 属性将屏幕空间属性绑定到真实空间属性:

如果我尝试将上述两种方法结合在一起,我会遇到一个问题:

这张图对我来说很有意义,但我不认为直接在 * 处的那种“双向”三向绑定是可能的。但是是否有一种简单的方法来模拟/解决它?还是我应该采取完全不同的方法?

0 投票
1 回答
110 浏览

java - 双向绑定到属性否定

给定

有没有办法将它们的否定双向绑定,以便 A.get() == -minusA.get() 始终如此,并且两者都可以set()

0 投票
2 回答
1573 浏览

angular - 将输入转换为Angular2中的数字?

有没有办法自动将组件的输入转换为数字?

例如这个组件初始化如下:

并在这里定义:

有没有办法limit自动转换为数字或整数?

否则,我将不得不输入 is 作为字符串或任何 in Typescript,或者通过将其转换为数字 in 来启动组件ngOnInit(),我想避免这种情况。

0 投票
2 回答
1512 浏览

qt - 如何从 QML 将属性绑定到单例对象属性

有一个关于如何从单例对象属性绑定到 QML 属性的问题。但是,如果我们想将 QML 属性绑定到单例对象呢?

这是单例类定义,

在 QML 上

我想绑定textField.text到 Singleton 对象name属性。可以将其与解决方法绑定,例如,

但这实际上不是一个属性绑定,因为它是一个赋值。

那么对于单例对象属性是否有更自然的绑定方式?

0 投票
2 回答
4011 浏览

javafx - JavaFX:检查文本属性是否为空(而不仅仅是空)

我想根据文本字段是否包含任何内容来启用或禁用按钮,并且我想通过使用属性绑定来实现这一点。

所以起初我在文本字段的 text 属性上使用了 isEmpty() 方法来为按钮的 disabled 属性创建一个布尔绑定:

虽然绑定有效,但我对“文本字段包含任何内容”的定义与 isEmpty() 方法所做的不同,即仅检查文本的长度是否 > 0。但是,我对是否存在“真实”文本感兴趣,即文本字段是否为空白(不仅不为空,而且实际上不仅是空格)。

不幸的是,没有方法 isBlank(),而且我在 Bindings 实用程序类中也找不到任何合适的方法。现在我看到您可以通过 Bindings.createBooleanProperty 方法实现任何您喜欢的自定义布尔属性,但我还不熟悉定义自定义绑定的概念。我将如何为我的案例实现这样的布尔属性?

0 投票
0 回答
1487 浏览

javascript - Angular2:为 img src 调用本地对象函数

我有以下模板

photos作为模板的输入。该函数photo.getUrl()只返回一个带有一些图像 url 的字符串。CollageComponent看起来像:

但是src(显然)来的值是字符串文字"photo.getUrl()"。这里应该做什么,以便为图像src分配函数返回的值getUrl()

0 投票
4 回答
16445 浏览

javascript - 插值和属性绑定的区别

我有一个定义imageUrl属性的组件,在我的模板中我使用这个属性来设置图像的 url。我尝试了使用插值和使用属性绑定,两者都有效,但我找不到两者之间的任何差异,或者何时使用一个而不是另一个。有谁知道区别?

0 投票
1 回答
2422 浏览

qt - QML 属性临时值而不完全破坏绑定

在 QML 中(至少在 5.6 1版本之前),一旦在 JavaScript 上下文中分配了新值,属性绑定就会被破坏:

一旦reassignBool被调用,boundBooltrue不管 的状态sourceBool

我希望能够为不会破坏原始绑定的属性分配一个临时值;临时值将持续存在,直到NOTIFY触发与原始绑定相关联的任何信号,此时绑定属性将再次反映绑定计算的值。

作为一个示例用例,假设我有一个按钮,我不希望用户能够连续按两次,并且根据某些规则启用或禁用该按钮:

假设当按钮被点击时,最终会<condition1>变成,所以按钮最终会被适当地禁用——但不是立即false

所以我想做如下的事情:

...但当然,一旦我重新建立绑定,既然condition1还没有成为false就会enabled再次成为true

我想我可以创建某种Connections对象,将NOTIFY与之关联的信号连接<condition1>到将调用的处理程序Qt.binding,然后....删除该Connections对象,我想。但这似乎相当复杂和不雅。

有什么方法可以确保将enabled其设置为false immediate ,然后在发出任何这些信号后立即重新绑定到NOTIFY信号?<condition1><condition2>

1我不完全确定赋值如何影响 5.7 中的绑定,但我知道为属性赋值不会自动破坏绑定。所以这可能会在 5.7 中自动开箱即用。