使用ng-change更新model,但是view不会更新的问题

主要功能是实现级联菜单,当一级菜单中选中除“请选择”的值时,二级菜单能够正确显示,但是当一级菜单选中“请选择”时,二级菜单会保留上次显示的内容,不会按照预想的置空。此时使用console打印的时候twos已经为空了,下拉框却没更新,百度了说要用$apply,不过用了报错,所以想请教下正确的解法,谢谢大家。

HTML代码

<div class="col-md-4">
    <div class="form-group">
        <label class="control-label col-md-4">一级菜单</label>
        <div class="col-md-8">
            <select name="onemenu" class="form-control selectpicker" ng-model="one" ng-change="test(one)">
                <option value="">请选择</option>
                <option ng-repeat="one in ones"  value="{{one.id}}" on-finish-render>
                    {{one.name}}
                </option>
            </select>
        </div>
    </div>
</div>
<div class="col-md-4">
    <div class="form-group">
        <label class="control-label col-md-4">二级菜单</label>
        <div class="col-md-8">
            <select name="twomenu" class="form-control selectpicker" ng-model="two">
                <option value="">请选择</option>
                <option ng-repeat="two in twos" value="{{two.id}}" on-finish-render>
                    {{two.id}}
                </option>
            </select>
        </div>
    </div>
</div>

Js代码

$scope.twos = new Array();

$scope.test = function (data) {
    if(data != ""){
        //根据一级菜单获取二级菜单要显示的值
        $scope.twos = oneMap[data];
    } else {
        //将二级菜单置空
        $scope.twos  = [];
    }
}
阅读 3.4k
2 个回答

clipboard.png

one是ones遍历出来的对象 你写在外面怎么能拿到。
select标签用ng-options就行了 不用去option再ng-repeat。


用ng-options

<select name="onemenu" class="form-control selectpicker" ng-model="one" 
    ng-change="test(one)" ng-options="one.id as one.name for one in ones">
    <option value="">请选择</option>
</select>

改成这样 再看ng-change,应该可以拿到你选的对象了。

虽然内心是拒绝的,但是后面还是用ng-repeat,吧js代码改成这样就没问题了

$scope.test = function (data) {
    if(data != ""){
        //根据一级菜单获取二级菜单要显示的值
        $scope.twos = oneMap[data];
    } else {
        //将二级菜单置空
        $scope.two = null;
        $scope.twos  = [];
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题