AngularJS使用ngModel进行单向绑定

时间:2015-09-17 13:53:59

标签: angularjs angularjs-directive

如何在没有双向绑定的指令中隔离ngModel。我目前的代码不起作用:

scope: {
  ngModel: "&"
},

我不会收集我的收藏品,而是采用一种方法。

3 个答案:

答案 0 :(得分:0)

根据您的角度版本,您可以在视图中使用::将双向数据绑定转换为单向。

例如:

<element ng-model="::object.value"></element>

这应该从角度版本1.3及以上

起作用

答案 1 :(得分:0)

ngModel使用双向绑定。因此,您需要将其作为表达式进行评估,然后使用结果。

<element ng-model="myvar"></element>

$scope.$watch(function() {
     return attr.ngModel
}, function(value) {
     var oneWay = $scope.$eval(value);
});

不要使用隔离范围,因为您希望访问ngModel所在元素上的范围。

答案 2 :(得分:0)

这就是你如何做你要求的。 (不知道这是否可以用于有用的东西) 如果声明隔离范围并使用ng-model,则可以从ngModelCtrl获取值。(在指令中需要它):

app.directive('test', function($timeout) {
  return {
    scope : {},
    require: 'ngModel',
    link : function(scope, elem, attrs, ctrl) {
      console.log(ctrl);
      ctrl.$viewChangeListeners.push(function() {
        scope.test = ctrl.$modelValue;
        console.log('test = ', scope.test)
      })
    }
  };
});

您的孤立范围中的ngModel值是单向绑定的。 http://plnkr.co/edit/4xGhb5OYRVg6gtzLDHlY?p=preview