我知道我可以设置Backbone模型属性的值,这样它就不会使用{silent:true}触发更改事件.我也知道如果我将模型的属性设置为它已经具有的值,它将不会触发更改事件,这几乎总是一件好事.但是,有没有办法强制更新模型以触发更改事件,即使它被设置为相同的值?
所以如果在我的模型中我设置:
defaults:{
attributeToChange: "myValue"
}
Run Code Online (Sandbox Code Playgroud)
然后在使用这个模型的视图中我调用:
this.model.set('attributeToChange', 'myNewValue', {silent:true});
Run Code Online (Sandbox Code Playgroud)
值将更改但不会触发更改事件.但是,如果我想在设置属性的值时触发更改事件,无论它设置为什么,该怎么办?所以,如果相反,我只是做了
this.model.set('attributeToChange','myValue');
Run Code Online (Sandbox Code Playgroud)
是否有一个我可以添加的参数会强制将其视为一个变化?我相信我可以使用
this.model.trigger('change:attributeToChange');
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否有办法在没有这个的情况下强制改变事件.
额外问题:如果我将模型的属性设置为已有的值,这是否会使属性的先前值成为我发起更改之前的值?
this.model.set('attributeToChange','someValue');
this.model.set('attributeToChange','anotherValue');
this.model.set('attributeToChange','anotherValue');
console.log(this.model.previous('attributeToChange')); //someValue or anotherValue?
Run Code Online (Sandbox Code Playgroud) 我正在将 Storybook 与 React 项目一起使用,该项目也使用样式组件。其中许多样式定义访问在目录根目录的文件:root中定义的 CSS 变量值。以这种方式定义的所有 CSS 变量都只是颜色的占位符。但是,当组件在 Storybook 中渲染时,CSS 变量的值不会被访问,因此这些颜色永远不会渲染/显示。index.csssrc
有没有办法通过插件或配置来使我在index.css文件中定义的 CSS 变量在 Storybook 中渲染时可供组件访问?