【问题标题】:Binding to knockoutjs a dynamically created fabricjs itext绑定到knockoutjs一个动态创建的fabricjs itext
【发布时间】:2016-05-26 19:45:49
【问题描述】:

我有一个 fabricjs 画布,我正在尝试使用 knockoutjs 来管理文本对象的状态。单击时有一个按钮,它会向画布添加一个新的 IText...

但我也有一个按钮

试图使按钮与新的 IText 相关联,因此当用户单击按钮时,它只会使 IText 变为粗体......我正在尝试使用淘汰赛来做到这一点...... 因此,当文本为粗体时,按钮状态会更改以显示文本所处的状态...

由于没有 html 元素,无法弄清楚如何将敲除与 IText 关联...我如何在 JS 中做到这一点?

这个jsfiddle 展示了一种方法......但它不是动态创建的对象

<canvas id="c" data-bind="fabric: [ { type: 'Rect', params: rect.getParams }, { type: 'Rect', params: rect2.getParams } ]"></canvas>

感谢您的帮助...为了您的方便,我在这里做了一个 jsfiddle

https://jsfiddle.net/sarin/62ku4kyj/

【问题讨论】:

    标签: javascript knockout.js fabricjs


    【解决方案1】:

    您必须创建一个任意名称的计算 observable,然后在计算 observable 的函数中:1. 引用 observable(例如 myStyle)和 2. 创建调用结构接口的代码。

    myScratchVar = ko.computed(function() {
      var scratchStyle = self.myStyle();   // triggers this function to run
      MyFunctionToSetFabricAttributes(scratchStyle);  
      return true;   
    }); 
    

    【讨论】:

    • 对不起,我知道要淘汰,似乎无法让这个工作,无论如何你可以在这个 jsfiddle 上显示给我看,jsfiddle.net/sarin/62ku4kyj
    • 首先,您必须确定要跟踪的内容......就可观察对象而言,您希望在视图模型中得到什么?也许你不需要 Knockout,因为 Fabric 有一个 JSON 实用程序 (?)
    • 我只想管理状态,所以当用户选择文本、粗体、斜体按钮时,按钮应切换状态以匹配文本,例如:如果是粗体文本,则按钮状态应更改为大胆,管理这些状态变得疯狂......淘汰赛似乎非常适合管理状态......
    • 所以,这并不是那么简单,因为 Knockout observables 是函数,并且是通过调用它们来设置的。在这种情况下,您可以使用 Fabric 回调函数,例如“object:selected”来运行一个函数,该函数确定该对象的属性并根据需要设置按钮的样式。见link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2012-10-15
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多