2014-05-04 61 views
11

我在我的angular js項目中遇到$ scope問題。例如,當我在輸入字段上使用ng-model =「modelExample」時,我無法使用$ scope.modelExample在我的js中訪問它。有其他人有類似的問題嗎?爲什麼我的ng模型變量在控制器中未定義?

這是奇怪的,一個函數被調用,但ng模型不綁定。看到我的代碼如下,函數refreshResults()在我提交表單時調用,但$ scope.search返回爲undefined。

angular.module('starter', 
    ['ionic', 
    'starter.controllers', 
    'starter.filters', 
    'akoenig.deckgrid', 
    "angucomplete", 
    // 'ui.bootstrap', 
    'starter.services']) 

.config(function($stateProvider, $urlRouterProvider) { 
    $stateProvider 
     .state('app', { 
      url: "/app", 
      abstract: true, 
      templateUrl: "templates/menu.html", 
      controller: 'AppCtrl' 
     }) 

     .state('app.browse', { 
      url: "/browse", 
      views: { 
       'menuContent' :{ 
        templateUrl: "templates/browse.html", 
        controller: 'BrowseCtrl' 
       } 
      } 
     }) 

     .state('app.search', { 
      url: "/search", 
      views: { 
       'menuContent' :{ 
        templateUrl: "templates/search.html", 
        controller: 'SearchCtrl' 
       } 
      } 
     }) 
    // if none of the above states are matched, use this as the fallback 
    $urlRouterProvider.otherwise('/app/browse'); 
}); 


angular.module('starter.controllers', []) 
.controller('SearchCtrl', function($scope) { 
    $scope.refreshResults = function() { 
     console.log($scope.search); 
    }; 
}) 


<ion-view> 
    <ion-content class="has-header"> 
     <form ng-submit="refreshResults()" class="bar bar-header item-input-inset"> 
      <label class="item-input-wrapper"> 
       <i class="icon ion-ios7-search placeholder-icon"></i> 
       <input type="search" placeholder="Search..." ng-model="search"> 
      </label> 
     </form> 
    </ion-content> 
</ion-view> 
+2

其中'SearchCtrl'結合在HTML? –

+5

我認爲最受歡迎的角度問題主題。閱讀此:http://jimhoskins.com/2012/12/14/nested-scopes-in-angularjs.html –

+1

@DavinTryon,我用更多的代碼細節更新了我的問題。 –

回答

37

@DavidTryon在評論中解決了我的問題。我使用範圍錯誤。我需要使用一個對象而不是一個字符串。換句話說,我需要做一些像ng-model="search.term"而不是ng-model="search",並在js中使用它:$scope.search.term。它與繼承有關,但長話短說,如果你的ng模型中沒有一個點(。),那麼你做錯了。

下面是詳細信息: http://jimhoskins.com/2012/12/14/nested-scopes-in-angularjs.html

感謝大衛!

湯姆

+1

我喜歡它,'長話短說,你做錯了'謝謝,解決了我的問題 – klskl

0

或者集納克控制器= 「SearchCtrl」 到像下面的離子含量標籤:

<ion-content class="has-header" ng-controller="SearchCtrl"> 
相關問題