这个HTML正确绑定到我的模型:
HTML:
<div class="page-title">
<h1>
<span>@L("GoogleInsights") - {{selectedAcct.accountName}}</span>
</h1>
</div>
模型:
// Data bindings
$scope.selectedAcct = null;
...
但是,如果用户未登录,则该属性将为null。所以我创造了 -
$scope.activeAccount = function () {
if (selectedAcct == null) {
return "[Not Logged In]";
}
else {
return selectedAcct.accountName;
}
}
然后尝试将其绑定为 -
<span>@L("GoogleInsights") - {{activeAccount}}</span>
<span>@L("GoogleInsights") - {{activeAccount()}}</span>
<span>@L("GoogleInsights") - {{$scope.activeAccount}}</span>
<span>@L("GoogleInsights") - {{$scope.activeAccount()}}</span>
但这些都不起作用。以下是我在浏览器中看到的每个内容:
<span>@L("GoogleInsights") - {{activeAccount}}</span>
Google见解 -
<span>@L("GoogleInsights") - {{activeAccount()}}</span>
Google Insights - {{activeAccount()}}
<span>@L("GoogleInsights") - {{$scope.activeAccount}}</span>
Google见解 -
<span>@L("GoogleInsights") - {{$scope.activeAccount()}}</span>
Google见解 -
其中唯一显示出任何“生命迹象”的是
<span>@L("GoogleInsights") - {{activeAccount()}}</span>
但显然我没有得到功能回归。并且在呈现页面时,函数中设置的断点不会跳闸。
第一个问题 - 我应该能够以这种方式绑定到函数吗?
如果没有,那么这个讨论结束了,谢谢你的回答。
如果是的话,你能发现我做错了吗?谢谢!
{{activeAccount()}}是正确的语法,但不建议使用。每次触发更改检测时,您的功能都会再次运行。一旦你得到它,就可以在函数中放置一个console.log来查看触发函数的程度。您应该将应用程序设计为仅在需要时运行计算逻辑,并将结果存储在范围变量上。
注意,不建议注入$ scope,这是开发AngularJS的传统方法。将控制器视为语法或使用组件。