Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ngModel的AngularJS单向绑定_Angularjs_Angularjs Directive - Fatal编程技术网

使用ngModel的AngularJS单向绑定

使用ngModel的AngularJS单向绑定,angularjs,angularjs-directive,Angularjs,Angularjs Directive,如何在没有双向绑定的情况下隔离指令中的ngModel。我当前的代码不起作用: scope: { ngModel: "&" }, 我没有得到我的收藏,而是一个方法。根据角度的不同,您可以在视图中使用:将双向数据绑定转换为单向数据绑定 例如: <element ng-model="::object.value"></element> 这应该适用于angular版本1.3及更高版本。ngModel使用双向绑定。所以需要将其作为表达式求值,然后使用结果 <

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

scope: {
  ngModel: "&"
},

我没有得到我的收藏,而是一个方法。

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

例如:

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


这应该适用于angular版本1.3及更高版本。ngModel使用双向绑定。所以需要将其作为表达式求值,然后使用结果

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

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

$scope.$watch(函数(){
返回attr.ngModel
},函数(值){
var单向=$scope.$eval(值);
});

不要使用孤立的作用域,因为您希望访问ngModel所在元素上的作用域。

这就是您可以按要求执行操作的方式。(不知道这是否可以用于有用的东西) 若您声明隔离作用域并使用ng模型,则可以从ngModelCtrl获取值。(在指令中需要它):

并且您的隔离范围内的ngModel值是单向绑定的。

这不是单向绑定,它是一次性绑定,因此在初始绑定后不会刷新。@ThinkingMedia“以
::
开头的表达式被视为一次性表达式。一次性表达式稳定后将停止重新计算,如果表达式结果是未定义的值(请参见下面的值稳定算法),则在第一次摘要之后会发生这种情况。“在一次性绑定部分,我认为您的意思是@.scope:{test:'@}”…但这不适用于ngModel指令。实际上有一个如何使用ngModel的示例。
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)
      })
    }
  };
});