在具有复杂域对象的Aurelia中,启用和禁用保存按钮的最佳方法是什么?

在具有复杂域对象的Aurelia中,启用和禁用保存按钮的最佳方法是什么?,aurelia,Aurelia,我将editMessage.js构造函数设置为: constructor(){ var messageStringProperty1 = new messageStringProperty(); messageStringProperty1.propertyName = 'title'; messageStringProperty1.propertyValue = 'This is the menu for school campus'; this.messageProper

我将editMessage.js构造函数设置为:

 constructor(){

  var messageStringProperty1 = new messageStringProperty();
  messageStringProperty1.propertyName = 'title';
  messageStringProperty1.propertyValue = 'This is the menu for school campus';
  this.messageProperties[0] = messageStringProperty1;

  var messageIntegerProperty1 = new messageIntegerProperty();
  messageIntegerProperty1.propertyName = 'Menu Title Font Size';
  messageIntegerProperty1.selectedValue = 30;
  messageIntegerProperty1.selectableValues = [10, 12, 14, 30]
  this.messageProperties[1] = messageIntegerProperty1;

  var messageImageProperty1 = new messageImageProperty();
  messageImageProperty1.propertyName = 'Background Image';
  messageImageProperty1.elementName = 'BackgroundImage';
  messageImageProperty1.originalImage = "http://i2.wp.com/ejohn.org/files/Timers.png";
  this.messageProperties[2] = messageImageProperty1;

 var messageColorProperty1 = new messageColorProperty();
  messageColorProperty1.propertyName = 'Title Color';
  messageColorProperty1.propertyValue = '#ffffff';
  messageColorProperty1.elementName = 'TitleColor';
  this.messageProperties[3] = messageColorProperty1;

}
而editMessage.html(视图)是:

  • 名称:${p.propertyName} 名称:${p.propertyName} 名称:${p.propertyName} 名称:${p.propertyName}
  • 我希望有一个保存按钮,这样,如果我的任何message*属性对象发生更改,它将启用,否则它将保持禁用状态


    在过去,我创建了一个计时器,并通过比较原始值和更改的值来执行一些脏检查。Aurelia的最佳方法是什么?

    多亏了zewa66,我复制了与之相同的方法。我所做的是在每个业务对象message*属性上创建一个hasPropertyChanged方法

    例如,关于messageStringProperty,我有:

    get propertyHasChanged(){
      return this.originalValue != this.propertyValue;
    } 
    
    那么,关于主要观点,我有:

     get canSave(){
       for (var i=0; i< this.messageProperties.length; i++){
         if (this.messageProperties[i].propertyHasChanged){
          return true;
        }
      }
    
      return false;
    } 
    
    get-canSave(){
    for(var i=0;i
    我们认为:

     <button class="btn btn-success" click.trigger="saveChanges()"
                              disabled.bind="!canSave">Save Changes</button>
    
    保存更改
    
    您应该看看Contacts应用程序示例,它使用了与您希望实现的类似的方法
     <button class="btn btn-success" click.trigger="saveChanges()"
                              disabled.bind="!canSave">Save Changes</button>