Javascript myVar绑定到哪个元素?“ng init”的问题`
我想知道在使用Javascript myVar绑定到哪个元素?“ng init”的问题`,javascript,angularjs,data-binding,angularjs-ng-init,Javascript,Angularjs,Data Binding,Angularjs Ng Init,我想知道在使用nginit时幕后发生了什么 有时候nginit会做一些意想不到的事情,我调试起来很困难 假设我有以下结构: <!-- App --> <div ui-view> <!-- Component --> <custom-component> <!-- Transcluded component --> <transcluded-component>
nginit
时幕后发生了什么
有时候nginit
会做一些意想不到的事情,我调试起来很困难
假设我有以下结构:
<!-- App -->
<div ui-view>
<!-- Component -->
<custom-component>
<!-- Transcluded component -->
<transcluded-component>
<!-- Controller -->
<div ng-controller="MyCtrl">
<!-- Element -->
<div ng-init="myVar = 'hello'">
{{myVar}}
</div>
</div>
</transcluded-component>
</custom-component>
</div>
在本例中,我跳过了两次函数调用,并保持了模板的干净。有时nginit
会做一些意想不到的事情,我的调试很困难
在其元素范围的上下文中计算角度表达式。许多指令(ng repeat
,ng controller
,ng if
,ng view
等)创建了它们自己的范围
有关详细信息,请参阅
避免使用
ng init
避免使用ng init
。它混淆了模型和视图,使得代码难以理解、调试和维护。而是在控制器中初始化模型
从文档中:
恩吉尼特
此指令可能被滥用,以便在模板中添加不必要的逻辑量。ngInit
只有一些适当的用途,例如用于对ngRepeat
的特殊属性进行别名,如下面的演示所示;以及通过服务器端脚本注入数据。除了这几种情况之外,还应该使用而不是ngInit
来初始化作用域上的值
更新 问:我还添加了一个我有时使用的代码块示例
<!-- Controller -->
<div ng-controller="MyCtrl">
<!-- Element -->
<div ng-init="myVar = 'hello'">
{{myVar}}
</div>
</div>
通过使用模型和视图,代码变得更易于理解、调试和维护 感谢您的参考,但是,这并没有回答我关于绑定的问题。我还添加了一个我有时使用的代码块的例子。问题不是“它做了一些意想不到的事情”,我是说“我想知道在使用ng init时幕后发生了什么”,我的问题是“myVar绑定到哪个元素?”。在其元素范围的上下文中计算角度表达式。许多指令(
ng repeat
,ng controller
,ng if
,ng view
等)创建了它们自己的范围。有关详细信息,请参阅。另请看。谢谢,这正是我要找的!如果你能用这个更新你的答案,我会很高兴地把它标记为接受。更新的答案。
<!-- Controller -->
<div ng-controller="MyCtrl">
<!-- Element -->
<div ng-init="myVar = 'hello'">
{{myVar}}
</div>
</div>
app.controller("MyVar", function($scope) {
this.$onInit = function() {
$scope.myVar = 'hello';
};
});