我正在试用 Octane,出于某种原因,如果我在模板中显示一个数组并向其中添加一个新对象,则 UI 不会更新。我究竟做错了什么?
这是我的模板:
<label for="new-field-name">Field Name</label>
<Input id="new-field-name" @value={{this.newFieldName}} type="text" />
<button {{on "click" this.addField}}>Add field</button>
{{#each this.fields as |field|}}
<p>{{field.name}}</p>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
和组件:
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
export default class ConfigControlsComponent extends Component {
@tracked fields = []
@tracked newFieldName = ''
@action addField() {
this.fields.push({
name: this.newFieldName
})
console.log(this.fields)
}
}
Run Code Online (Sandbox Code Playgroud)
该console.log节目的阵列添加到它的新对象,并且fields阵列被跟踪,但是当我按一下按钮没有什么变化。
我刚刚将Ember插件从3.0版升级到3.8版,现在收到以下警告:
添加到非交互元素的交互no-invalid-interactive
例如:
<div class="some-class" onclick={{action "selectDate" "today"}}>
<div> more content </div>
</div>
Run Code Online (Sandbox Code Playgroud)
当您单击操作时,它将带您进入新路线。
我有什么方法可以正确地修复它,以便可以访问它?
当我require在 JavaScript 中使用时,我收到来自 eslint 的警告,“require is not defined eslint(no-undef)”。
除了这个文件,我项目中的所有文件都使用浏览器env,这是在我的.eslintrc.
我怎样才能例外并为这个文件指定一个节点环境?
var fs = require('fs');
var path = require('path');
// my code
Run Code Online (Sandbox Code Playgroud) 我想编写一个Octane / Glimmer样式的组件,其中传递动作是可选的。编写此内容的最佳方法是什么?
例如,我希望组件的这两种用法都有效:
<MyComponent />
<MyComponent @validate={{action this.validate}} />
Run Code Online (Sandbox Code Playgroud)
现在,我的组件类有很多看起来像这样的代码,在调用之前检查是否传递了动作:
<MyComponent />
<MyComponent @validate={{action this.validate}} />
Run Code Online (Sandbox Code Playgroud)
这对于一个动作来说效果很好,但是如果我需要连续调用几个可选方法,那就不行了。还有什么其他选择?
我正在使用Ember 3,并且在使用带有动态网段的路由器服务时遇到问题。在我的组件中,transitionTo单击时将路由器服务用于子路由,但出现此错误:
错误:传递的上下文对象多于路由的动态段:data.images.image
这是在组件js中,在这里我使用transitionTo并为一个动态段传递一个参数:
router: service(),
actions: {
navToSubpage() {
// this.image is a single Ember Data record/object
this.router.transitionTo('data.images.image', this.image)
}
},
Run Code Online (Sandbox Code Playgroud)
这是从我的路由器发出的,该路由器具有带有一个动态网段的嵌套路由:
Router.map(function() {
this.route('data', function() {
this.route('images', function() {
this.route('image', {path: '/image_id'});
});
});
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?在这种情况下,该错误对我而言没有任何意义。
我正在Ember v3.13中编写一些Octane风格的组件,以及{{did-insert}} ember-render-modifier。但是,当绑定到的函数did-insert被调用时,我得到了TypeError: this is undefined。我究竟做错了什么?
这是我的组件模板:
<div class="cardhost-monaco-container" {{did-insert this.renderEditor}}></div>
Run Code Online (Sandbox Code Playgroud)
这是组件的JavaScript类:
import Component from '@glimmer/component';
export default class CodeEditor extends Component {
renderEditor(el) {
console.log(this.args.code)
}
}
Run Code Online (Sandbox Code Playgroud) 如何追踪此错误的来源?我搜索了我自己的代码库,但在我使用{{array}}帮助程序的任何地方都找不到。它发生在验收测试期间。
您试图覆盖不允许的内置帮助程序“数组”。请重命名助手。
我正在尝试更新我的一些 Ember 依赖项,这导致了这个问题。