首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >angular自定义指令双向绑定问题

angular自定义指令双向绑定问题
EN

Stack Overflow用户
提问于 2015-07-08 03:25:52
回答 1查看 461关注 0票数 0

我在网上看到了一些例子,并在SO上回答了一些问题,但不知何故,我的自定义指令没有得到双向绑定。

当我更改指令模板中的输入值时,ngModel不会更新控制器的作用域。

这就是我所拥有的:

控制器

代码语言:javascript
复制
$scope.tpcompl = "default value";
$scope.$watch('tpcompl', function(val) {
    alert('value changed!');
});

指令

代码语言:javascript
复制
.directive("panMdAutocomplete", function() {
    return {
        restrict: 'E',
        scope: {
            ngModel: '=panModel',
            panLista: '=',
            panLabel: '=',
            panMaxlength: '=',
            panFlex: '='
        },
        templateUrl: 'template.html',
        link: function($scope, element, attrs){
            var sugereItem = function(termo) {
                var valor = termo.toUpperCase().trim();
                var resultados = [];
                for (var i=0;i<$scope.panLista.length;i++) {
                    var item = $scope.panLista[i];
                    if (item.id.toUpperCase().indexOf(valor) !== -1) {
                        resultados.push({label:item.id, value:item.id});
                    }
                }
                return resultados;
            }

            $scope.autocomplete_options = {
                    suggest: sugereItem
            };
        }
    }
});

模板

代码语言:javascript
复制
<span mass-autocomplete>
    <md-input-container ng-class="{'md-input-has-value': ngModel}" flex="{{panFlex}}" style="position:static;">
        <label>{{panLabel}}</label>
        <input type="text" ng-model="ngModel" ng-attr-maxlength="{{panMaxlength ? panMaxlength : ''}}" mass-autocomplete-item="autocomplete_options" class="md-input">
    </md-input-container>
</span>

最后是带有自定义指令的HTML

代码语言:javascript
复制
<pan-md-autocomplete pan-lista="tiposcompl" pan-label="'Complemento'" pan-maxlength="'8'" pan-flex="'25'" pan-model="tpcompl"></pan-md-autocomplete>
EN

回答 1

Stack Overflow用户

发布于 2015-07-10 19:24:13

我认为问题出在控制器变量,一旦将控制器变量作为对象传递,而不是像这样直接传递变量,

代码语言:javascript
复制
  $scope.tpcompl = {
               value :"default value"
                    };

在HTML中使用:

代码语言:javascript
复制
<pan-md-autocomplete pan-lista="tiposcompl" pan-label="'Complemento'" pan-maxlength="'8'" pan-flex="'25'" pan-model="tpcompl.value"></pan-md-autocomplete>

希望这能行得通。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31277582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档