为什么我使用{{myItem}}
获取数据绑定的值,但是当我尝试分配一个新变量时,我得到或输出到控制台我得到undefined
。
这是我的控制者:
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内部设置,在init外面,一切都在我的页面上工作,除了_model
值未定义的地方,一旦我与someting交互并且它得到更新一切正常,只是不在初始化< / p>
更新
这就是我的服务看起来像
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 :(得分:1)
打电话给你的功能: $ scope.init();
在您的代码中,init函数不会在初始化控制器上运行。你必须手动调用它。
答案 1 :(得分: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);
});