У меня есть простая страница с полем ввода и кнопкой для изменения имени. Имя изменяется на ng-клик кнопки, но то, что я хочу сделать, ниже текста приветствия {{name}}, чтобы иметь журнал выбранных предыдущих имен и время их выбора. напримерУгловые данные JS с фабрики в контроллер
Здравствуйте Том
- сэм - 1414530148463
- Мик - 1414530159015
Я попытался ниже в этой скрипке http://jsfiddle.net/4ybmyf1a/2/ но получаю сообщение «не могу прочитать свойство нажима не определено '(Я прокомментировал в myCtrl так, чтобы скрипка работала)
<div ng-controller="MyCtrl">
<input type="text" ng-model="updatedname" />
<input type="button" value="Change name" ng-click="changeName(updatedname)"/>
<br/>
Hello, {{name}}!
<ul>
<li ng-repeat="names in namelog">{{nameLog.value}} - {{nameLog.time}}</li>
</ul>
</div>
var myApp = angular.module('myApp',[]);
myApp.factory('UserService', function() {
var userService = {};
userService.name = "John";
userService.ChangeName = function (value) {
userService.name = value;
};
userService.NameLog = function (value) {
userService.nameLog.push ({
"value":value,
"time" :Date.now()
});
};
return userService;
});
function MyCtrl($scope, UserService) {
$scope.name = UserService.name;
$scope.updatedname="";
$scope.changeName=function(data){
$scope.updateServiceName(data);
}
$scope.updateServiceName = function(name){
UserService.ChangeName(name);
//UserService.NameLog(name);
$scope.name = UserService.name;
//$scope.nameLog = UserService.NameLog;
}
}
Я также рассмотрел добавление в userService.nameLog = [], чтобы остановить неопределенную проблему, однако это не толкает элементы, как я хочу.
userService.NameLog = function (value) {
userService.nameLog = [];
userService.nameLog.push ({
"value":value,
"time" :Date.now()
});
};
Как я могу добиться этого?