2014-10-23 6 views

ответ

1

the docs Как государства,

Единственное правильное использование ngInit является для наложения специальных свойств из ngRepeat, как показано на рисунке демо. Кроме этого случая, вы должны использовать контроллеры, а не ngInit, чтобы инициализировать значения в области.

Это не то, что вы делаете. Фактически, что ngInit делает, это init переменная, которая будет доступна внутри области ngRepeat. Вы даже не создаете переменную (я имею в виду, например, что-то вроде myVar = someValue), вы просто выполняете расчет.

Так что, я думаю, что вы должны отказаться от ngInit и вместо того, чтобы создать функцию в $ объеме, как:

$scope.myFunc = function(index) { 
    return 'aaa' + (index + 1); 
} 

И использовать его как:

<input type="text" ng-bind="myFunc($index)"> 

Edit: Я не на самом деле уверены, что ng-bind - это именно то, что вы хотите, особенно учитывая, что вы используете его с <input>. В качестве примера я использовал только ng-bind, вы должны использовать то, что считаете более подходящим.

+0

Большое спасибо. Это помогло мне. – Patan

0

Если вы хотите увидеть вычисленное значение в текстовом поле вам нужно изменить, чтобы

ng-init="dt.in='aaa' + $index + 1" 

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

 
app.controller('fCtrl', function($scope) { 
 

 
    $scope.data = [ 
 

 
    { in : 1 
 
    }, { in : 2 
 
    } 
 
    ] 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app"> 
 
    <div ng-controller="fCtrl"> 
 

 
    <div ng-repeat="dt in data"> 
 
     <input type="text" ng-model="dt.in" ng-init="dt.in='aaa' + $index + 1"> 
 
    </div> 
 

 
    </div> 
 
</div>

Смежные вопросы