Могу ли я создать экземпляр переменной, но позже присвоить ей значение?

0

Я имею переменную в моем контроллере и хотел бы присвоить значение позже, когда вы нажмете на кнопку. т.е.

var app = angular.module('myApp', ['ngRoute']);    

....

var userArray = [
    {name: "John", age: 25}, {name: "Jim", age: 30}
];

app.controller('Page2Controller', function($scope) {
    $scope.message = 'Look! I am from page 2.';
    $scope.newArray = [];

    $scope.addUsers = function(){
        scope.newArray = userArray;

        console.log($scope.newArray);
    }  
}

app.config(function($routeProvider) {
    $routeProvider

    .when('/page2', {
       templateUrl : 'pages/page2.html',
       controller  : 'Page2Controller'

   ...

page2.html

<div>
     <p>{{ message }}</p>

     <ul>
         <li ng-repeat="user in Page2Controller.newArray">{{user.name}}</li>
     </ul>
</div>

index.html

<body ng-controller="MainController">
    <div id="sideMenu">
        <h2>Campaign</h2>

        <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#page2">Page 2</a></li>
            <li><a href="#page3">Page 3</a></li>
            <li><a href="#page4">Page 4</a></li>
        </ul>
    </div>

    <div ng-view></div>
</body>

Я не понимаю, почему $ scope.user отображается в консоли, но на странице html "ng-repeat" не отображает пользователей. Может быть, ng-repeat не может отображать данные, которые были добавлены динамически?

Кто-нибудь может мне помочь? Понятно, что.

  • 2
    У вас есть это: scope.newArray = userArray; и я думаю, что было бы лучше добавить $ sign $scope.newArray = userArray;
Теги:
angularjs-ng-repeat
ng-repeat

3 ответа

1
Лучший ответ

Я никогда не называл эту функцию.

var app = angular.module('myApp', []);    
var userArray = [{name: "John", age: 25}, {name: "Jim", age: 30}];
app.controller('Page2Controller', function($scope) {
    $scope.message = 'Look! I am from page 2.';
    // $scope.newArray = [];
    $scope.addUsers = function(){
        $scope.newArray = userArray;
        console.log($scope.newArray);
    }  
    $scope.addUsers();
});

и html

<div ng-controller="Page2Controller">
                         <p>{{ message }}</p>

                         <ul>
                             <li ng-repeat="user in newArray">{{user.name}}</li>
                         </ul>
                    </div>

Я статически использовал ваш контроллер, поскольку я не реализовал ngRoute.

  • 0
    Привет спасибо за ответ Он намекнул на правильный ответ. Вместо ng-repeat = "user in Page2Controller.newArray" я сделал ng-repeat = "user in newArray", и теперь оно работает.
  • 0
    Было бы хорошо, если бы вы пометили мой ответ как правильный ...
1

Попробуйте переключиться на:

<li ng-repeat="user in scope.newArray">{{user.name}}</li>

Я не думаю, что "Page2Controller" известен в контексте шаблона.

0

Прежде всего, вам нужен дериватив ng-click, где вы должны нажать, например,

<button type="button" ng-click="asigningValue()"></button>

Затем в вашем контроллере вы должны назначить то, что хотите, например, в контроллере. После этого вам необходимо связать, вы назначаете значение в директиве, например

app.controller('Page2Controller', function($scope) {
$scope.asigningValue=function(){
     $scope.message = 'Look! I am from page 2.';
  } 
}

Затем покажите, используя директиву, используя привязку данных, как

<p ng-bind-html="message"></p>

Надеюсь, это будет полезно!

Спасибо!

Ещё вопросы

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