• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Angular + Rails und select-tags

subsonnic

New member
Hallo nochmal,

ich schaff es einfach nicht in einer select-Liste innerhalb einer Tabelle innerhalb einer ng-repeat directive die verschachtelte resource als voreinstellung in der drop-down liste einzutragen. Auswählen und speichern funktioniert, abe ich möchte bei vorhandenen Werten schon gerne den Wert als selektiert drin stehen haben.

Hier das template
HTML:
<tr ng-repeat="ticket in tickets">
						<td>
							<button class="btn btn-default" ng-click="update(ticket)" ><span class="glyphicon glyphicon-floppy-save"></span>Save</button>
							<button class="btn btn-default" confirm-message="Are you sure?" confirm-click="delete(ticket)" ><span class="glyphicon glyphicon-remove"></span>Delete</button>
							<button class="btn btn-default" ng-click="edit(ticket)" ><span class="glyphicon glyphicon-edit"></span>Edit</button>
						</td>
						<td>{{ticket.referenceNo}}</td>
						<td>
							<select class="form-control" ng-model="ticket.user" ng-options="user.username for user in users">
							</select>
						</td>
						<td>{{ticket.customerName}} [<a ng-href="mailto:{{ticket.customerEmail}}" target="_blank">{{ticket.customerEmail}}</a>]</td>
						<td>{{ticket.subject}}</td>
						<td>{{ticket.message}}</td>
						<td><select class="form-control" ng-model="ticket.status" ng-options="status for (status,id) in statuses"></td>
					</tr>



Und hier der Controller
HTML:
angular.module('OnApp').controller("TicketCtrl", [ '$scope', '$location', '$window', 'Ticket', 'User', 'StatusList', 'ngDialog', ($scope, $location, $window, Ticket, User, StatusList, ngDialog)->
 
  $scope.message=""
  $scope.current_ticket=$window.current_ticket
  $scope.tickets=[]
  $scope.users=[]
  $scope.statuses=[]
  $scope.action=$window.ticket_action
  
  console.log($window.current_ticket)
  console.log($scope.current_ticket)
  
  Ticket.query().then (tickets) ->
    $scope.tickets = tickets 
    
  User.query().then (users) ->
    $scope.users = users    
    
  StatusList.query().then (statuses) ->
    $scope.statuses = statuses    
    
   
  $scope.create = (current_ticket) -> 
      result = new Ticket(current_ticket).create()
      console.log(result)
      if result?
        $scope.message="Ticket created successfull. An confirmation email was send to your email address."
        $scope.current_ticket=null
      else
        console.log("Error during ticket creation!")
        $scope.message="Ticket creation failed! Try again."
        $scope.current_ticket=null
        
        
  $scope.delete = (current_ticket) ->  current_ticket.delete().then (result) ->
    if result
      $scope.tickets.splice $scope.tickets.indexOf(current_ticket), 1
      ngDialog.open({ 
        template: 'dialogs/error.html',
        scope: $scope,
        className: 'ngdialog-theme-default',
        
      })
      
  $scope.update = (current_ticket) -> current_ticket.update().then (result) ->
    if result
      $scope.message="Ticket Updated."
        
  $scope.edit = (current_ticket) -> 
    $location.path('/tickets/'+current_ticket.id) 
    $window.current_ticket=current_ticket
    $window.ticket_action="edit"
])


Und hier noch die Services
HTML:
angular.module('OnApp').factory('Ticket', ['railsResourceFactory', 'railsSerializer', 'User', (railsResourceFactory, railsSerializer, User) ->
  resource = railsResourceFactory
    url: '/api/tickets',
    name: 'ticket',
    serializer: railsSerializer -> 
      @resource 'user', 'User'
  
  resource::user = -> User.get @userId         
    
  return resource      
])

angular.module('OnApp').factory('User', ['railsResourceFactory', (railsResourceFactory) ->
    return railsResourceFactory
        url: '/api/users',
        name: 'user' 
])


Und zum beseren Verständnis noch ein bischen Ruby
Code:
create_table "tickets", force: true do |t|
    t.string   "status"
    t.text     "message"
    t.string   "subject"
    t.integer  "user_id"
    t.string   "customer_name"
    t.string   "customer_email"
    t.string   "reference_no"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "users", force: true do |t|
    t.string   "username"
    t.string   "password"
    t.datetime "created_at"
    t.datetime "updated_at"
  end



Das sollte doch eigentliuch kein Problem darstellen. Ist ja etwas selbstverständliches (dachte ich)


Danke für jede Hilfe

David
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben