Javascript 在附加属性和编译属性上使用双向绑定

Javascript 在附加属性和编译属性上使用双向绑定,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我正在用另一个指令的指令附加html元素。我已经成功地使用answer将html元素添加到指令中 但是,通过指令添加到这些元素的值不会随着范围的改变而改变。比如说, 控制器代码: var DatepickerDemoCtrl = function ($scope) { $scope.el=2; }; 定向链接功能 link: function link(scope,element, attrs) { element.attr('value', scope.el); //sets v

我正在用另一个指令的指令附加html元素。我已经成功地使用answer将html元素添加到指令中

但是,通过指令添加到这些元素的值不会随着范围的改变而改变。比如说,

控制器代码:

var DatepickerDemoCtrl = function ($scope) {
  $scope.el=2;
};
定向链接功能

link: function link(scope,element, attrs) {
    element.attr('value', scope.el); //sets value to 2 as expected

    element.removeAttr("common-things");

    scope.el = 1 //Does not change value to 1

    $compile(element)(scope);

    //Even changing the scope variable after a timeout, the value remains 2
    $timeout(function(){
      scope.el = 4
    }, 2000); 
  }
可以在以下位置找到一个可用的plunker:

更改值后运行$compile会起作用,但它会重置元素中的所有值(例如更改属性并运行compile会删除当前的ng值)


如何从指令内部将值绑定到范围

有几种方法可以做到这一点,但我首先要介绍的方法是将scope变量作为独立作用域传递给内部指令,该独立作用域绑定有=属性。@tuckerjt07我尝试将作用域传递给独立作用域,然后在超时后触发函数,但仍然没有按预期更改值。()