如何从“递归”指令接收最后选择的值?

问题描述

我有调用 herseft 的指令。

<div>
    <div class="c-select u-margin-b-15" ng-if="!vm.areLastOptionsToSelect">
        <select class="form-control"
            ng-model="vm.selectedOption"
            ng-options="option.text for option in vm.options track by option.value">
        </select>
    </div>

    <my-component ng-if="vm.hasSelectedOptionChildren"
                   i-options="vm.selectedOption.childNodes"
                   i-model="vm.selectedOption"></my-component>
</div>

输入是像这样的集合:

[
   {
      "prop1":1,"childNodes":[
         {
            "prop1":11,"childNodes":[
               
            ]
         },{
            "prop1":12,"childNodes":[
               
            ]
         }
      ]
   },{
      "prop1":2,"childNodes":[
         {
            "prop1":21,{
            "prop1":22,{
            "prop1":23,"childNodes":[
               
            ]
         }
      ]
   }
]

我从控制器视图调用我的指令

<my-component i-options="options" i-model="form.selectedConfig"></my-component>

我想接收 form.selectedConfig 的最新可能选择值。我的意思是 - 当没有 childNodes 并且当前选择的值是所需的值时,对我来说最新的是值。如果有一些 childNodes,那么用户应该从 childNodes 等中选择一些内容

问题 - 我无法仅使用 ng-model 获得最后选择的值。我可以使用 watchersevents

使其工作

在我的指令中:

this.$scope.$watch(() => { return this.selectedOption; },() => {
                if (this.selectedOption && !this.selectedOption.hasChildNodes) {
                    this.$scope.$emit('$myEvent',this.selectedOption);
                }
                else {
                    this.$scope.$emit('$myEvent',null);
                }
            },true);

在控制器中:

 $scope.$on('$myEvent',(event,option) => {
     $scope.form.selectedConfig = option;
 });

我不喜欢这种方法,因为我需要知道事件名称并将其添加到我的控制器中。

是否有其他解决方案可以使此工作正常进行?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)