首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在观察者中观察到的属性中的串联字符串。

在观察者中观察到的属性中的串联字符串。
EN

Stack Overflow用户
提问于 2016-06-16 07:17:11
回答 2查看 251关注 0票数 0

我有一个组件,在这个组件中,我从模型中观察到一个属性,在控制器设置中,模型作为控制器属性‘模型’提供给控制器。模型有属性,年龄,薪水,等级。组件中的属性将由用户输入。

该组件将被称为:

代码语言:javascript
运行
复制
{{ui-slider prop="age"}}

代码语言:javascript
运行
复制
{{ui-slider prop="salary"}}

这不是完整的组件,但它解释了我的问题。组件是:

代码语言:javascript
运行
复制
App.UiSliderComponent = Ember.Component.extend({

prop:function(){
    return this.get('prop');
}.property('prop'),

modelPropertyObserver:function(){
    console.log("property is "+this.get('targetObject.model').get(this.get('prop'));
}.observes('targetObject.model.'+this.get('prop')),

didInsertElement:function(){
   console.log("Element inserted");
}

})

这不管用。当我观察到财产时

.observes('targetObject.model.age')

那它就能正常工作。

但现在它显示了

cori_component.js:29 Uncaught TypeError: this.get is not a function

我也试过.observes('targetObject.model.'+this.prop)

虽然它没有显示出任何错误,但是观察者不工作。

如何将“道具”属性连接到观察者?

或者,我是否可以将组件内部的字符串连接起来,然后将其替换为观察者。

EN

Stack Overflow用户

发布于 2016-06-16 10:21:29

您可以通过重写init并在那里设置属性来尝试以下操作(我已经这样做了,使其具有一个动态计算属性)。我使用Babel具有ES2015特性(比如...arguments和string插值)

代码语言:javascript
运行
复制
init() {
this._super(...arguments);
this.set('value', Ember.computed(`model.${this.get('attribute')}`, function() {
  return this.get(`model.${this.get('attribute')}`);
}));
}

根据文档,可以用Ember.computed替换Ember.observer (并替换相应的方法签名片段从文件中复制)。

代码语言:javascript
运行
复制
Ember.observer('value', function(sender, key, value, rev) {
// Executes whenever the "value" property changes
// See the addObserver method for more information about the callback arguments
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37852347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档