通过指令更改ng-model

时间:2014-02-18 15:26:06

标签: angularjs angularjs-directive angularjs-controller

我试图通过点击指令模板中的编辑锚来改变指令内输入的ng-model。

函数f()假设访问外部控制器并将editableValue绑定到名称或公司,以便我可以通过输入更改它。

输入确实显示人员值但不绑定它。

<p edit="person.name"></p>
<p edit="person.company"></p> 
<input ng-model="editableValue">

main.controller('editsCtrl', function($scope){
    $scope.setToEdit = function(val){
        $scope.editableValue = val;
    }
}); 

main.directive('edit', function(){
return{
    template:'{{edit}}<a ng-click="f()"> Edit </a>',
    restrict:'A',
    scope:{
        edit:"="
    },
    replace:false,

    link: function(scope, element, attrs, ctrl) {
            scope.f = function(){
                  scope.$parent.setToEdit(scope.edit);
            }
          } 
    }
})

即使我这样做,它没有绑定,只传递值:

scope.$parent.editableValue = scope.$parent.person.name;

对于新手来说,这有点令人困惑,我缺少什么?

1 个答案:

答案 0 :(得分:0)

范围分配失败:

scope.f = function(){
                  scope.$parent.setToEdit(scope.edit);
            }

因为你在这里限制范围:

scope:{
        edit:"="
    },

编辑是父将看到的唯一范围,因为您已使用'='设置了双向数据绑定