Aurelia oneTime绑定为defaultBindingMode

时间:2016-03-15 21:15:49

标签: javascript aurelia aurelia-binding

我正在尝试做这样的事情:

bindable({defaultBindingMode: bindingMode.oneTime}) options = {};

并在浏览器的控制台中收到警告:

WARN [templating-binding] Unknown binding command. Object {defaultBindingMode: 1, attrName: "route-href", attrValue: "navModel.config.name", command: "onetime", expression: null}

我不应该能够指定options参数(实际上只在attached()中使用过一次)默认只能绑定一次吗?

2 个答案:

答案 0 :(得分:0)

您无法以您尝试的方式使用bindable的内联语法。您需要使用更详细的语法并装饰该类。

@bindable({
    name: 'options',
    defaultBindingMode: bindingMode.oneTime,
    defaultValue: {}
});
export class MyViewModel {
...
}

@bindable的语法如下(直接来自文档):

@bindable({
  name:'myProperty',
  attribute:'my-property',
  changeHandler:'myPropertyChanged',
  defaultBindingMode: bindingMode.oneWay,
  defaultValue: undefined
})

答案 1 :(得分:0)

你必须这样使用它;

import {bindable} from 'aurelia-framework'
import {bindingMode} from 'aurelia-binding'

@bindable({name:'foo', defaultBindingMode : bindingMode.oneTime})
export class Elem{
  foo;
}

或者你可以在线进行:

import {bindable} from 'aurelia-framework'
import {bindingMode} from 'aurelia-binding'

export class Elem{
  @bindable({name:'foo', defaultBindingMode : bindingMode.twoWay}) foo;
}
使用的代码

Here is a plunker。但是有一个错误,oneTime被用作defaultBindingMode时会被忽略。请参阅我刚刚报道的this issue