2015-02-20 1 views
0

Я пытаюсь захватить user.firstName и user.lastName, добавить коллекцию часов к этим моделям и отбросить имя пользователя.

Кажется, я не могу общаться между ними, я думаю, что я использую scope и self wrong. Я довольно новый и недопонимающий две концепции.

И потому, что я получаю сообщение об ошибке, что такое правильный способ захватить lastName и firstName от $user объекта, и выплюнуть обратно что-то мнение?

Я использую синтаксис «контроллер как». Ty для любого руководства.

HTML

<input ng-model="ctrl.user.firstName" required> 
<input ng-model="ctrl.user.lastName" required> 
<input type="text" value="{{userName}}" name="user_name" ng-model="ctrl.user.userName"> 

JS

var self = this 
$scope.$watchCollection('[user.firstName, user.lastName]', function() { 
    if (self.user.firstName != '' && self.user.lastName != '') { 
     $scope.userName = self.user.firstName + '_' + self.user.lastName + '_' + Math.floor((Math.random() * 100000) + 1); 
     $scope.user.userName.$setViewValue($scope.userName); 
    } 
}); 

ответ

0

$ watchCollection оценивается по объему, поэтому вам нужно:

var self = this 
self.user = {}; 
$scope.$watchCollection('[ctrl.user.firstName, ctrl.user.lastName]', function() { 
    if (self.user.firstName != '' && self.user.lastName != '') { 
     $scope.userName = self.user.firstName + '_' + self.user.lastName + '_' + Math.floor((Math.random() * 100000) + 1); 
     self.user.userName.$setViewValue($scope.userName); 
    } 
}); 

Кроме того, я не думаю, что вы нужно беспокоиться об использовании $ s etViewValue, просто изменится:

$scope.$watchCollection('[ctrl.user.firstName, ctrl.user.lastName]', function() { 
    if (self.user.firstName != '' && self.user.lastName != '') { 
     self.user.userName = self.user.firstName + '_' + self.user.lastName + '_' + Math.floor((Math.random() * 100000) + 1); 
    } 
}); 

и ваш HTML, чтобы:

<input type="text" name="user_name" ng-model="ctrl.user.userName"> 

«имя» атрибут используется только если вы встраивание вход в форме. Если это так, то вы можете получить доступ для проверки, и т.д., с

$scope.formName.user_name 
+0

self.user.firstName производит ошибку, это потому, что это не экземпляр, прежде чем часы происходит ?? – Tuesdave

+1

Да, вам нужно инициализировать объект пользователя, прежде чем ссылаться на его свойство. См. Обновление –