angularjs - обновить значение ng-модели с контроллера? - PullRequest
0 голосов
/ 15 мая 2018

Вид 1:

<div ng-controller="ctrl1">
    <button ng-click="goToExtendedForm({'name':'aaa'})">
    </button>
</div>

Упр 1:

    $scope.selectedList = {
        name: ""
    };

    $scope.goToForm = function(e) {
        $scope.selectedList.name = e.name;
        $state.go('view2');
        console.log(e); // prints updated value
    };

Вид 2:

<div ng-controller="ctrl1">

<input
        id="name"
        name="name"
        type="text"
        ng-model="selectedList.name"
        ng-readonly="true"
/>
</div>

Но поле ввода всегда пусто, хотя для перехода к представлению вызывается goToForm (). Почему он не обновляет значение HTML? Представления изменяются с $ состояние ui.router.

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

Из вашего описания ваш код должен работать.Проверьте, передаете ли вы правильный параметр в функцию.Вот рабочая демонстрация:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.selectedList = {
    name: ""
  };

  $scope.goToForm = function(e) {
    $scope.selectedList.name = e.name;
    console.log(e); // prints updated value
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">

  <button ng-click="goToForm({'name':'aaa'})">Change</button>
  <br>
  <input type="text" ng-model="selectedList.name" ng-readonly="true" />

</div>
0 голосов
/ 15 мая 2018

Попробуйте это;

HTML-код

  <div ng-app>
      <div ng-controller="ClickToEditCtrl">
        <input
                                id="name"
                                name="name"
                                type="text"
                                ng-model="selectedList.name"
                                ng-readonly="true"
                        />
                        <button ng-click="goToForm(testUserDetails)" >Go To</button>

                        </button>
      </div>
    </div>

Определите контроллер следующим образом;

function ClickToEditCtrl($scope) {
  $scope.selectedList = {
        name: ""
    };
$scope.testUserDetails ={
        name: "nimal"
}
    $scope.goToForm = function(e) {
        $scope.selectedList.name = e.name;
        console.log(e); // prints updated value
    };
}
0 голосов
/ 15 мая 2018

Попробуйте добавить $scope.$apply() в конце вашей $scope.goToForm функции

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