Javascript 我可以使指令的转移范围与父指令相同吗?

Javascript 我可以使指令的转移范围与父指令相同吗?,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,假设我在angular中有一些html: <input type='text' ng-model='stuff' /> {{stuff}} <button class="primary" ng-click='dothestuff()'>Do the stuff</button> 这段代码将在我输入并按下按钮时输出 一切都很好 但现在我想创建一个指令,将元素包装在div中,以便在深灰色背景中显示 我创建了一个指令,该指令将排除元素并用div包装它们: 当然

假设我在angular中有一些html:

 <input type='text' ng-model='stuff' /> {{stuff}}
 <button class="primary" ng-click='dothestuff()'>Do the stuff</button>
这段代码将在我输入并按下按钮时输出

一切都很好

但现在我想创建一个指令,将元素包装在div中,以便在深灰色背景中显示

我创建了一个指令,该指令将排除元素并用div包装它们:

当然,这个指令将为被转移的元素创建一个新的作用域。input元素不再引用在按下按钮时将获得输出的stuff属性

我可以通过引用$parent使其工作,如下所示:

 <input type='text' ng-model='$parent.stuff' /> {{stuff}}
然而,我宁愿不这样做。在使用新指令包装时,我希望尽可能保持html不变

如何使转置的元素直接引用父范围


这是一个解决问题的方法。

与其试图使被转移的元素引用父范围,不如使用对象属性:

$scope.obj = {stuff: 'arf'};

由于转移的作用域来自父作用域,因此转移的作用域可以访问所有父作用域属性。通过使用对象属性,写入将转到父作用域属性。使用原语时,写入操作会在子转置范围上创建新属性,从而隐藏/隐藏同名的父范围属性。

与其尝试使转置元素引用父范围,不如使用对象属性:

$scope.obj = {stuff: 'arf'};

由于转移的作用域来自父作用域,因此转移的作用域可以访问所有父作用域属性。通过使用对象属性,写入将转到父作用域属性。在使用原语时,写入操作会在子转置范围上创建新属性,从而隐藏/隐藏同名的父范围属性。

因此,无法实际将转置范围设置为当前父范围?不过,这是一个很好的解决办法,可能是一个很好的遵循标准-将作用域的所有数据包装到一个对象中。@MongusPong,我不知道有什么方法可以使被转移的作用域成为父作用域。所以,没有办法真正使被转移的作用域成为当前的父作用域?不过,这是一个很好的解决办法,而且可能是一个很好的遵循标准-将作用域的所有数据包装到一个对象中。@MongusPong,我不知道有什么方法可以将转包的作用域作为父作用域。
$scope.obj = {stuff: 'arf'};