错误:与指令一起使用的表达式"未定义"是不可分配的

krv*_*krv 6 javascript json angularjs

在这里摆弄 http://jsfiddle.net/prantikv/dJty6/36/

我有来自json的数据

$scope.info={
 "company1":"this",
 "company2":"is",
  "company3":"sparta"
}
Run Code Online (Sandbox Code Playgroud)

ng-repeat用来打印所有数据,我想单调更改字段.

 <input type="text" ng-repeat="item in info" value="{{item}}" monitor-change>
Run Code Online (Sandbox Code Playgroud)

我有一个monitorChange指令,如下所示:

.directive('monitorChange', function() {
  return {
    restrict: 'A',
    scope: {changedFlag: '='},
    link: function(scope, element, attrs) {
      var $el = angular.element(element);
      $el.on('keyup', function() {//bind to element
          scope.$apply( function() {
            scope.changedFlag =true;//on key press value is changed
          });
      });
    }
  };
}); 
Run Code Online (Sandbox Code Playgroud)

尝试更改数据时,我收到错误 Error: [$compile:nonassign] Expression 'undefined' used with directive 'monitorChange' is non-assignable!

我在我的视图中打印数据:

{{changedFlag }}
Run Code Online (Sandbox Code Playgroud)

代码有什么问题?

Vin*_*y K 9

  1. 正如您scope: {caretPosition: '='}在指令定义中提到的,我们需要传入caret-position="obj.changedFlag"标记.
  2. 至于ng-repeat会为每个项目的新范围,这是很好的使用点符号的改变在控制器的范围内反映.

这是更新的小提琴.http://jsfiddle.net/dJty6/38/