2013-08-23 18 views
0

爲什麼我從我的{{myItem}}獲取數據綁定值,但是在我的控制器中,當我嘗試分配新變量I得到或輸出到控制檯我得到undefined爲什麼我會在控制器中獲取未定義的變量,但它在具有數據綁定功能的HTML頁面中正確顯示

這是我的控制器:

var controllers = angular.module("myItem.controllers", []); 
controllers.controller('myItemController', function ($scope, MyItemService) { 
    $scope.version_model = null; 
    $scope.itemGroup_model = null; 
    $scope.item_model = null; 

    $scope.myItem = null; 
    $scope.versions = null; 
    $scope.itemGroups = null; 
    $scope.hierarchies = null; 

    $scope.init = function() { 

     $scope.myItem = MyItemService.getMyItem(); 
     console.log("myItem => id= " + $scope.myItem.versionID + " requestTypeID: " + $scope.myItem.requestTypeID); 
     $scope.versions = MyItemService.getVersions(); 
     $scope.version_model = $scope.myItem.versionID; 
     console.log("version_model :" + $scope.version_model + "scope.myItem.versionID : " + $scope.myItem.versionID); 

     $scope.itemGroups = MyItemService.getItemGroups(); 
     $scope.itemGroup_model = $scope.myItem.itemGroup; 
     console.log("itemGroup_model :" + $scope.itemGroup_model + " scope.myItem.itemGroup : " + $scope.myItem.itemGroup); 

     $scope.hierarchies = MyItemService.getItemList($scope.itemGroup_model); 
     $scope.item_model = $scope.myItem.itemName; 
     console.log("item_model :" + $scope.item_model + " scope.myItem.itemName : " + $scope.myItem.itemName); 
    } 

    $scope.getItems = function (group) { 
     $scope.hierarchies = MyItemService.getHierarchyList(group); 
    } 

任何時候,我嘗試分配從$ scope.myitem什麼,我不斷收到未定義。我曾嘗試在init裏面的初始化設置,出邊,一切正常,我的網頁上除了_model值,其中不確定的,有一次我與成才交互方式,並得到更新,一切工作正常,只是不能在初始化

更新

這是我的服務是什麼樣子

angular.module('servicefactories', []) 
    .factory('MyItemService', function ($http, $q) { 
    obj.getMyItem= function() { 
     var mypromise = $q.defer(); 
     $http.get('getforEdit') 
      .success(function (data, status, headers, config) { 
      mypromise.resolve(data); 
     }); 

     return mypromise.promise; 
    } 

    return obj; 

}); 
+0

最可能的原因可能是獲取myItem所致電的不同性質 – Chandermani

+0

@chandermani您有任何建議可以抵消嗎? – jonnie

+0

這是調用異步'MyItemService.getMyItem();' – Chandermani

回答

1

正如我懷疑這是異步調用的問題。您可以使用承諾中的then方法來訪問數據並分配一次數據來自服務器。類似於

MyItemService.getMyItem().then(function(data) { 
     $scope.myItem=data; 
     console.log("myItem => id= " + $scope.myItem.versionID + " requestTypeID: " + $scope.myItem.requestTypeID); 
     $scope.versions = MyItemService.getVersions(); 
     $scope.version_model = $scope.myItem.versionID; 
     console.log("version_model :" + $scope.version_model + "scope.myItem.versionID : " + $scope.myItem.versionID); 
}); 
+0

謝謝你的簡潔明瞭的答案,非常感謝 – jonnie

1

調用你的函數: $ scope.init();

在您的代碼init函數不要在初始化控制器上運行。您必須手動調用它。

+0

只有一半解決了這個問題,我現在可以在我的頁面中看到它但是,_model值仍然未定義 – jonnie

+0

您在$ scope.myItem中有值versionID和itemName? versionID - 字符串或對象? – 2013-08-23 12:28:56

+0

我確定是的,所有的字符串,數據綁定到帶有{{workflow.VersionID}}的頁面的作品 – jonnie

相關問題