2015-03-08 3 views
0

У меня есть следующий URL:Чтение URL Строка запроса

http://myUrl.com/#/chooseStyle?imgUpload=6_1405794123.jpg 

Я хочу прочитать значение imgUpload в строке запроса - я пытаюсь:

alert($location.search().imgUpload); 

Но ничего предупреждения, даже не пустое предупреждение - но консоль читает:

$location is not defined 

Мне нужно это значение, чтобы добавить в контроллер, чтобы вытащить данные обратно, а также нести в себе представление как часть ng-src

Есть ли что-то, что я делаю неправильно? это мое приложение конфигурации:

capApp.config(function($locationProvider, $routeProvider) { 
    $locationProvider.html5Mode(false); 
    $routeProvider 

    // route for the home page 
    .when('/', { 
    templateUrl : '/views/home.html', 
    controller : 'mainController' 
    }) 

    // route for the caption it page 
    .when('/capIt', { 
    templateUrl : '/views/capIt.html', 
    controller : 'mainController' 
    }); 
}): 

Это мнение:

<div class="container text-center"> 
    <h1 class="whiteTextShadow text-center top70">Choose your photo</h1> 
</div> 

<script> 
    alert($location.search().imgUpload); 
</script> 

Главный контроллер:

capApp.controller('mainController', function($scope) { 
    $scope.message = 'Whoop it works!'; 
}); 

Моя конечная цель заключается в том, что я могу найти решение для захвата и повторно используя данные из строки запроса.

Я также упомянул, это только моя первая неделя в Угловом, любящая его до сих пор! Много учиться ...

+0

Мы не можем найти ошибку, не видя код. –

+0

ОК, это правда, хотя вид просто предупреждает (для начала в любом случае), что еще я могу показать вам, чтобы вы могли помочь? Thx для ответа –

+0

Если представление вызывает предупреждение, а предупреждение не отображается, то либо есть исключение, которое должно отображаться в консоли, либо представление фактически НЕ запускает предупреждение. Поскольку мы не знаем, что отображает консоль, и поскольку вы не будете показывать код, мы не сможем. Код имеет значение. С 2000+ точками репутации вы должны это знать. –

ответ

1
<script> 
    alert($location.search().imgUpload); 
</script> 

Вы делаете две ошибки здесь:

  1. выполнение кода во время загрузки страницы, а угловое приложение, таким образом, еще не начало
  2. предполагая $ location - глобальная переменная. Это не. Это угловое обслуживание, которое должно быть введено в ваш контроллер (или любой другой угловой компонент). Это должно привести к тому, что исключение будет отображаться и отображаться в консоли. Всегда оставляйте консоль открытой и не игнорируйте исключение.
+0

Я действительно подумал об этом, и ваши комментарии замечательные, огромное спасибо - просто оглядываясь вокруг MVC, и он щелкает медленнее, чем я хочу! Еще раз спасибо –

1
You should not do this 
<script> 
    alert($location.search().imgUpload); 
</script> 

// you need to inject the module $location 
//(either in service, or controller or wherever you want to use it) 
// if you want to use their APIs 

capApp.controller('mainController', function($scope, $location) { 
    $scope.message = 'Whoop it works!'; 
    //use API of $location 
    alert($location.search().imgUpload); 
}); 
+0

Большое спасибо за ваш ответ - я дал правильный ответ JB, поскольку объяснение было бесценным для меня, но я очень ценю вашу помощь –

+1

Мое удовольствие @DarrenSweeney. Если это поможет, я буду более удовлетворен. :) и правильный ответ очень важен для новых посетителей, поскольку они сначала смотрят на этот конкретный ответ и полагают, что это абсолютно правильно. Даже я чувствовал, его ответ был более полезным для аналогичной ситуации. – Nielarshi

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