任何人都知道从子视图模型中传回数据的正确方法吗?
我的子视图模型执行并执行操作,然后需要触发父模型中的事物刷新。
例如我在我的孩子模型中做了类似的事情:
vm.activate = function (params) {
vm.TaskTypeId = params.TaskTypeId;
vm.Sections = params.Sections;
vm.FieldId = params.FieldId;
vm.Dimensions = params.Dimensions;
并像这样调用它
<div data-bind="sortable: {data: Fields,beforeMove:$root.preOrder,afterMove:$root.saveOrder}">
<div class="item"><a data-bind="text:Name,click:function() {$root.edit(Id());}" style="margin-left:20px;"></a>
<!-- ko if: $root.selectedFieldId()==Id() -->
<!-- ko compose:{model:'tasktype/edittasktype/addedittasktype',activationData:{TaskTypeId:$root.TaskTypeId, Sections:$root.Sections,FieldId:$root.selectedFieldId,Dimensions:$root.Dimensions } } --><!-- /ko -->
<!-- /ko -->
</div>
</div>
这似乎有效,但我想知道是否有更好的方法?
答案 0 :(得分:1)
您可以自己实例化您的子视图模型(在JS代码中,而不是让撰写处理程序执行此操作)然后将其分配给父视图模型的属性,您可以依次编写它。
function Parent() {
this.child = new Child;
}
return Parent;
...
<!-- ko compose: child --> ...
然后,您可以使用child
属性从父级访问所有子属性。
如果您需要从子视图模型访问父属性,您可以在子构造函数中传递对父级的引用(这可能是也可能不是一个好主意,具体取决于您希望它们的耦合程度如何)。