我可以使用大括号表示法绑定到我的Angular模型的函数吗?

问题描述 投票:0回答:1

这个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>

但显然我没有得到功能回归。并且在呈现页面时,函数中设置的断点不会跳闸。

第一个问题 - 我应该能够以这种方式绑定到函数吗?

如果没有,那么这个讨论结束了,谢谢你的回答。

如果是的话,你能发现我做错了吗?谢谢!

javascript angularjs
1个回答
0
投票

{{activeAccount()}}是正确的语法,但不建议使用。每次触发更改检测时,您的功能都会再次运行。一旦你得到它,就可以在函数中放置一个console.log来查看触发函数的程度。您应该将应用程序设计为仅在需要时运行计算逻辑,并将结果存储在范围变量上。

注意,不建议注入$ scope,这是开发AngularJS的传统方法。将控制器视为语法或使用组件。

© www.soinside.com 2019 - 2024. All rights reserved.