Попытка инициировать переменную при загрузке страницы Angularjs

0

Я пытаюсь инициировать переменную showName при загрузке страницы. Он работал отлично, когда я делал это, используя только угловые, но когда я реализовал его с помощью рельсов (со встроенными метками ruby), я не могу скрыть текстовое поле и кнопку сохранения, так как моя переменная становится неопределенной. Я пробовал пару способов и не закончил безрезультатно.

Вот мой код. Любая помощь действительно ценится. Благодарю.

edit.html.erb:

<div class="row" ng-controller="EditUserCtrl">
<div class="col-md-6 col-md-offset-3" id="editForm">
    <%= form_for(@user) do |f| %>
        <h1 id="editHeader">Account Information </h1>
        <%= render 'shared/error_messages' %>
        <div class="form-group">
            <%= f.label :name, "Full Name:" %><br>
            <div class="row">

                <div class="col-sm-7">
                    <div ng-hide="showName">
                        <%= f.label :name, @user.name , id:"editFields" %>
                    </div>
                    <%= f.text_field :name, { :'ng-show' => 'showName'}%>
                </div>

                <div class="col-sm-5" ng-show="showName">
                    <%= f.button "Save", :action => "update_name" , :method => :put, class: "btn btn-primary", :'ng-click' => "clicked()", id:"editAccount" %>
                </div>

                <div class="col-sm-5" ng-hide="showName">
                    <a href="" ng-click="editName()" ng-hide="showName"> <i id="nav-cart-count" class="glyphicon glyphicon-edit"></i> Edit </a>
                </div>

            </div>
        </div>
    <% end %>
</div>

  • 0
    Я смущен. В этой реализации есть как rails, так и AngularJS. Вы ищете весь фрагмент, чтобы быть только рельсами без каких-либо углов? Если так, то почему угловое решение не работает?
  • 0
    что изменилось? Не знаю, зачем вам все это конвертировать в ruby, но конечный результат не должен отличаться от того, что вы работали раньше. Все, что видит браузер - это html, поэтому оно должно быть одинаковым
Показать ещё 3 комментария

1 ответ

0

Используйте ng-init для инициализации переменной

<div class="row" ng-controller="EditUserCtrl" ng-init="showName = true">
  • 0
    Я тоже попробовал, и это не сработало, так как контроллер запускается до ng-init. А в угловых документах docs.angularjs.org/api/ng/directive/ngInit говорится, что ng-init используется для наложения специальных свойств, а не для инициализации значений в области.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню