问题是: 使用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
答案 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
如果有更优雅的解决方案,我感兴趣。