angular-ui-router-ng-model不接受输入文本更改,除非在ng-repeat中

时间:2013-11-30 17:52:38

标签: angularjs angular-ui-router

问题是: 使用ui-router 0.2.0和angular 1.1.x,ng-model不接受对输入文本字段的更改(我也尝试使用复选框并选择下拉列表,同时禁止更改!)。

但是,ng-repeat中的输入文本确实有效。

最初加载视图/状态时,会从模型中填充值,但在此之后问题会自行显现。

如何修复下面的可运行示例以允许使用ng-model更改“Serial”输入文本字段?

请参阅下面的plunker和图片: (Stetch the plunker预览窗口可以解释可怜的css) http://plnkr.co/edit/bS8ZQuiJNG2uE4zuzvyB?p=preview

问题示例图片: https://docs.google.com/drawings/d/1CQb1SmJqWsWnuG87T0jrhiOTJdXIh3XCqXEINdbvx5c/edit?usp=sharing

1 个答案:

答案 0 :(得分:1)

问题在于使用具有承诺的ng-model。解决方案是解决promise,在promise的then(...)中分配$ scope.myModel:

var promise = somethingAsyncThatReturnsAPromise();
var itemDeferred = $q.defer();
itemDeferred.promise.then(function(obj) {
  $scope.myModel = obj;
});
itemDeferred.resolve(promise);

这个问题类似于: Using ng-model on a resolved promise in AngularJS (strange behavior)

这是一个固定的简化版本(角度1.2.3 + ui-router 0.2.0): http://plnkr.co/edit/eSQjfBpv1V6Q1WTiDV3N?p=preview

固定的原始版本(角度1.1.5 + ui-router 0.2.0): http://plnkr.co/edit/W7nkH8p6HreKcPOnfEq1?p=preview

如果有更优雅的解决方案,我感兴趣。