我有WPF
和MVVM
与Caliburn.Micro
的经验,并试图在Angular2中实现一个简单的示例。
我参加了WPF:
View
:与业务逻辑完全分离,仅包含视图的代码ViewModel
:它包含业务逻辑Commands
:与Angular2
我想实现这个:
点击按钮后,将文本从
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
很好地处理了它。没有杂乱,它非常简单,易于扩展。 Save
和CanSave
也很好地分开了。我不必担心CanSave
方法中的Save
。
我可以重复使用Command
,重用ViewModel
甚至View
。我可以通过继承现有的ViewModels
来创建新的ViewModels
。我可以使用不同View
的{{1}},反之亦然。
如何在ViewModels
中实现类似的功能?我应该将业务逻辑放入Angular2
吗? Angular2 ...... {/ p>以某种方式遗漏了Component