我有一个包含供应商列表的数组:
$scope.supplierList = [{id=1, name='supplier 1'}, {id=2, name='supplier 2'}];
然后我有一个模型(让我们称之为产品),我从一个服务中得到的值为:
id=1
name=Product A
supplier=supplier 1(this is an object reference)
当我将产品加载到表单进行编辑时,我需要有供应商1'是选择的选项,我尝试了不同的步骤,但似乎没有任何工作,我的代码如下:
<select ng-model="product.supplier" ng-options="supplier.name for supplier in supplierList">
<option value="">Select a Supplier</option>
</select>
在控制器中:
$scope.update = function (id) {//user clicks edit button, form modal shows up with filled up values because of model binding
$scope.product = Product.get({id: id});//retrieving the product
$scope.product.supplier = $scope.supplierList[1];//trying out if i can change the selected to something else, never works! Always defaults to select a supplier
//supplier is always deemed undefined
};
有什么想法吗?谢谢!
答案 0 :(得分:1)
我认为Product.get({id: id});
是对资源的调用,因此它将异步执行。来自服务器的数据将覆盖您的&#34; $scope.product.supplier
&#34;分配。
尝试将此代码更改为:
$scope.update = function (id) {
$scope.product = Product.get({id: id}, function(){
$scope.product.supplier = $scope.supplierList[1];
});
};
答案 1 :(得分:1)
我猜测Product是用$ resource(..)创建的。不明显的是,Product.get(..)调用将首先返回一个(几乎)空对象,一旦收到响应,将填充响应中的数据。同时,将删除对象中的任何先前值。
要设置供应商,您需要执行类似
的操作$scope.product = Product.get({id: id}, function (product) {
product.supplier = $scope.supplierList[1];
})
查看https://docs.angularjs.org/api/ngResource/service/ $资源,并考虑改为使用基本的$ http调用。 ngResource起初很好,很舒服,但很快就会出现问题,如你的问题所示。