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

时间:2015-03-16 12:58:02

标签: javascript json angularjs

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

我有像json这样的数据

$scope.info={
 "company1":"this",
 "company2":"is",
  "company3":"sparta"
}

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

 <input type="text" ng-repeat="item in info" value="{{item}}" monitor-change>

我有一个像这样的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
          });
      });
    }
  };
}); 

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

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

{{changedFlag }}

代码有什么问题?

1 个答案:

答案 0 :(得分:9)

  1. 正如您在指令定义中提到的scope: {caretPosition: '='},我们需要在标记中传递caret-position="obj.changedFlag"
  2. ng-repeat为每个项目创建一个新范围时,最好使用Dot符号表示更改,以反映在控制器的范围内。
  3. 这是更新的小提琴。 http://jsfiddle.net/dJty6/38/