从Angular指令更新模型

时间:2016-07-21 14:43:38

标签: javascript angularjs

我正在尝试更新模糊指令中的元素,但只更改了视图,而不是模型。

app.directive('myDirective', function() {
  return {
    require: 'ngModel',
    link: function(scope, element, attrs, ctrl) {
      element.bind('blur', function(e) {
        element[0].value = 'new val';
      }); 
    }
  };
});

我创建了一个简单的插件,突出了这个问题: https://plnkr.co/edit/yicenDSHNagapXxP7yrF?p=preview

很多人似乎都有这个问题,并且有很多关于如何使用范围内的函数更改特定模型的建议。但是我希望能够将此指令放到任何输入上,因此硬编码要更改的模型在这里不起作用。

我已尝试使用$ apply,如此处所述,但这也无效。 http://nathanleclaire.com/blog/2014/01/31/banging-your-head-against-an-angularjs-issue-try-this/。我错过了什么?

谢谢,

1 个答案:

答案 0 :(得分:1)

试试这个(plunker):

var app = angular.module('myApp', []);
app.controller('myCtrl', ['$scope', function($scope) {

  $scope.myVal = 'Demo';

}]);

    app.directive('myDirective', function() {
      return {
        require: '^ngModel',
        scope:{ngModel:'='},
        link: function(scope, element, attrs, ctrl) {
          element.bind('blur', function(e) {
            scope.ngModel='new val';
            scope.$apply();
          }); 
        }
      };
    });