Могу ли я привязать функцию моей угловой модели, используя фигурные скобки? - PullRequest
0 голосов
/ 27 марта 2019

Этот HTML-код правильно связывался с моей моделью:

HTML:

<div class="page-title">
  <h1>
     <span>@L("GoogleInsights") - {{selectedAcct.accountName}}</span>
  </h1>
</div>

Модель:

// Data bindings
$scope.selectedAcct = 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 Insights -

<span>@L("GoogleInsights") - {{activeAccount()}}</span>

Google Insights - {{activeAccount ()}}

<span>@L("GoogleInsights") - {{$scope.activeAccount}}</span>

Google Insights -

<span>@L("GoogleInsights") - {{$scope.activeAccount()}}</span>

Google Insights -

Единственный из них, у которого были какие-либо "признаки жизни", был

<span>@L("GoogleInsights") - {{activeAccount()}}</span>

Но, очевидно, я не получил функциональную отдачу. И точка останова, установленная в функции, не срабатывает при визуализации страницы.

Первый вопрос - можно ли связать с функцией таким образом?

Если нет, то эта дискуссия окончена, и спасибо за ваш ответ.

Если да, вы можете определить, что я делаю неправильно? Спасибо!

1 Ответ

0 голосов
/ 27 марта 2019

{{activeAccount ()}} - правильный синтаксис, но не рекомендуется. При каждом обнаружении изменений ваша функция запускается снова. Когда все заработает, поместите console.log в функцию, чтобы увидеть, насколько активна функция. Вы должны спроектировать свое приложение так, чтобы оно только запускало логику вычислений, когда это необходимо, и сохраняло результат в переменной области действия.

В дополнение к этому вводить $ scope не рекомендуется, это устаревший способ разработки AngularJS. Смотрите на контроллер как на синтаксис или используйте компоненты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...