javascript - EmberJS 2.7 - 如何为按钮绑定(bind)属性 'disabled'

标签 javascript ember.js binding

This官方指南描述了如何将 bool 属性绑定(bind)到 HTML 元素的禁用属性。然而它谈论的是 Controller 。

我有一个按钮,单击时会转换路线(抱歉,它必须是一个按钮,不能是链接):

/templates/trails.hbs

<button type="button" class="btn btn-primary" disabled={{isEditing}} 
              onclick={{route-action 'addNew'}}>Add New</button>

(route-action 是一个帮助器,允许我在路由中使用关闭操作)

/routes/trails.js

import Ember from 'ember';

export default Ember.Route.extend({
  actions: {
    addNew() {
      this.transitionTo('trails.new');
    } 
  }
});

因此,单击按钮后,路线将更改为“trails.new”

/routes/trails/new.js

import Ember from 'ember';

export default Ember.Route.extend({
  isEditing: true,
});

该属性似乎被忽略,并且没有像我预期的那样受到约束。我还尝试添加 Controller :

/controllers/trails/new.js

import Ember from 'ember';

export default Ember.Controller.extend({
  isEditing: true,
});

那么官方指南是如何建议一些看似行不通的东西的呢?我在这里缺少什么 Ember 魔法?

最佳答案

您的模板是templates/trails.hbs但你设置了isEditing在子路由 Controller 中controllers/trails/new.js

您需要有controllers/trails.js和 deinfe isEditing就在其中。

所以在 routes/trails.js实现这个:

actions: {
    willTransition: function(transition) {
      if(transtions.targetName === 'trails.new'){
        this.controller.set('isEditing', true);
      }
      else{
        this.controller.set('isEditing', false);
      }
    }
  }

关于javascript - EmberJS 2.7 - 如何为按钮绑定(bind)属性 'disabled',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395911/

相关文章:

php - 如何用MySQLI多次绑定(bind)参数?

C# WPF DatePicker 绑定(bind)

javascript - Redis ReJSON 系统地返回两个错误 : missing key at non-terminal path and new object must be created at root

javascript - 使用 if 语句使 div 淡入淡出

javascript - IndexedDB 在哪里?你如何使用它?

javascript - jquery与hoverIntent冲突

ember.js - 强制 EmberJS 路由到相同的 URL

javascript - 如何在没有pdf组件的手机浏览器中显示Base64编码的pdf

javascript - 使用模型中的 Ajax 数据填充 Ember JS Handlebars 模板?

wpf - Silverlight 3 绑定(bind)到集合中的当前项