2017-10-05 3 views
0

J'implémente un contrôleur pour un sélecteur de contenu dans Umbraco 7, où j'ai besoin de changer le nœud de démarrage pour qu'il corresponde à un nœud de contenu spécifique. Cependant wen je charge la page avec le sélecteur de contenu que je reçois une erreur disant:

« Impossible de lire la propriété « config » undefined »

En ce qui concerne ce morceau de code:

$scope.model.config.StartNodeId = 1083; 
    if ($scope.model.config.StartNodeId) { 
      options.startNodeId = $scope.model.config.StartNodeId; 
    } 

Mon contrôleur entier:

angular.module("umbraco").controller("UIOMatic.FieldEditors.Pickers.ContentController", 
    function ($scope, $routeParams, $http, dialogService, entityResource, iconHelper) { 

     function init() { 
      if (!$scope.setting) { 
       $scope.setting = {}; 
      } 

      var val = parseInt($scope.property.value); 

      if (!isNaN(val) && angular.isNumber(val) && val > 0) { 
       $scope.showQuery = false; 

       entityResource.getById(val, "Document").then(function (item) { 
        item.icon = iconHelper.convertFromLegacyIcon(item.icon); 
        $scope.node = item; 
       }); 
      } 

      $scope.openContentPicker = function() { 
       var d = dialogService.treePicker({ 

        section: "content", 
        treeAlias: "content", 
        multiPicker: false, 
        callback: populate 
       }); 
      }; 

      $scope.model.config.StartNodeId = 1083; 
      if ($scope.model.config.StartNodeId) { 
       options.startNodeId = $scope.model.config.StartNodeId; 
      } 

      $scope.clear = function() { 
       $scope.id = undefined; 
       $scope.node = undefined; 
       $scope.property.value = undefined; 
      }; 

      function populate(item) { 
       $scope.clear(); 
       item.icon = iconHelper.convertFromLegacyIcon(item.icon); 
       $scope.node = item; 
       $scope.id = item.id; 
       $scope.property.value = item.id; 
      } 
     }; 

     if ($scope.valuesLoaded) { 
      init(); 
     } else { 
      var unsubscribe = $scope.$on('valuesLoaded', function() { 
       init(); 
       unsubscribe(); 
      }); 
     } 
    }); 

J'ai essayé de changer le début ID de nœud à 1083, ce que je veux, et je peux très bien ouvrir le sélecteur de contenu, mais cela ne me permettra pas d'enregistrer mes modifications. Cela permet aussi le multi-picking, que j'ai défini sur false dans mon objet de configuration.

Ceci est la documentation du sélecteur de contenu de l'auteur: http://uiomatic.readthedocs.io/en/stable/02.DefaultEditorViews/#content-picker

Répondre

2

Je pense que vous devriez initialiser scope.model de $ avant d'affecter la valeur à son objet. utiliser

$scope.model = {} 
+0

Merci, j'ai réussi à le résoudre! – Leth