如何在Angular2中实现Caliburn.Micro样式的MVVM

时间:2017-06-08 11:48:15

标签: .net wpf angular mvvm caliburn.micro

我有WPFMVVMCaliburn.Micro的经验,并试图在Angular2中实现一个简单的示例。

我参加了WPF:

  1. View:与业务逻辑完全分离,仅包含视图的代码
  2. ViewModel:它包含业务逻辑
  3. Commands:与Angular2
  4. 中的服务类似

    我想实现这个:

      

    点击按钮后,将文本从TextBox发送到服务器并清除TextBox。如果TextBox为空,请禁用该按钮。

    我在WPF中实现了这个:

    这是我的观点:

    <TextBox Name="Message" /> <!-- Binding created by Caliburn.Micro -->
    <Button Name="Save" /> <!-- Binding created by Caliburn.Micro -->
    

    这是我的ViewModel:

    public string Message { get; set { // ... NotifyPropertyChanged ... } }
    
    public bool CanSave 
    { 
        get 
        {
            return !String.IsNullOrEmpty(Message);
        }
    }
    
    public void Save
    {
         var cmd = new SaveCommand(Message);
         cmd.Run();
         Message = null;
    }
    

    这是命令:

    public class SaveCommand 
    { 
         public void Run()
         {
              // ...
         }
    }
    

    如你所见,我没有必须编写Click个处理程序,创建绑定等。Caliburn很好地处理了它。没有杂乱,它非常简单,易于扩展。 SaveCanSave也很好地分开了。我不必担心CanSave方法中的Save

    我可以重复使用Command,重用ViewModel甚至View。我可以通过继承现有的ViewModels来创建新的ViewModels。我可以使用不同View的{​​{1}},反之亦然。

    如何在ViewModels中实现类似的功能?我应该将业务逻辑放入Angular2吗? Angular2 ...... {/ p>以某种方式遗漏了Component

0 个答案:

没有答案