2017-03-26 16 views
0

我有這個代碼,我期待從視圖/ HTML的一些數據,但變量$ scope.cityName是未定義的。

app.controller("citycontroller", function ($scope, cityfactory) { 
     $scope.searchByCid = function() { 
      console.log("Checking for city data"); 
      var promise = cityfactory.serverCall($scope.cityName); 
      promise.then(function (data) { 
       $scope.result = data.data; 
       console.log($scope.result); 
      }, function (error) { 
       $scope.error = error; 
      }); 
     }; 
     console.log($scope.cityName); 
    }); 

下面是HTML

<div> 
      <input type="text" ng-model="cityName" placeholder="Search places.." ng-init="cityName='Delhi'"> 
      <button ng-click="searchByCid()" id="checkcity">Check</button> 
     </div> 
+0

是'$ scope.result'數據在您的控制檯中正確嗎? –

回答

1

console.log($scope.cityName);

這種說法是沒有任何改變的事件處理函數,消化週期導致運行的一部分。

cityName是changing.If你要檢查它的JS:

$scope.callMe = function(){ 
    console.log($scope.cityName); 
} 

HTML:

使用ngChange

<input type="text" ng-model="cityName" placeholder="Search places.." ng-init="cityName='Delhi'" ng-change="callMe()"> 

或者乾脆在HTML中使用檢查interploation

<span>{{cityName}} </span> 
在JS

OR

使用$scope.$watch

$scope.$watch('cityName',function(oldVal,newVal){ 

    console.log(newVal); //it will print new updated cityname 
}) 
0

在控制器中創建一個對象,而不是使用單個變量$scope.cityName。嘗試使用$scope.data.cityName之類的東西,將ng-model更改爲data.cityName。另外,嘗試在控制器的開始初始化您的變量。

0
console.log($scope.cityName); 

該語句不在$ scope.searchByCid函數中。當控制器得到加載第一次(雖然呈現HTML),則調用

console.log($scope.cityName); 

因爲它顯示未定義$ scope.cityName的;

但是您將獲得$ scope.searchByCid中的$ scope.cityName,因爲它使用ng-init屬性進行初始化。

在您的方法內移動console.log。