gpt4 book ai didi

javascript - AngularJS UI-路由器 : Two way binding between resolved object in child/parent state—Child state won't update

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:44:56 25 4
gpt4 key购买 nike

我有一个父状态和一个子状态。父状态解析一个对象。然后,子状态从父状态解析该对象。

因为子状态正在从父状态解析对象,所以我预计会发生双向绑定(bind)。奇怪的是,虽然子状态的变化(即添加属性)更新了父状态中的对象——父状态中对象的变化不会影响子状态中已解析的对象,这让我感到惊讶。

我知道我可以将父状态中的已解析对象$broadcast更改为子状态,但我想了解为什么未更新子状态中的已解析对象自动地。

这是我正在处理的内容。父状态:

.config(function($stateProvider) {
$stateProvider.state('parent', {
template: ''
+' <div>Parent State</div>'
+' <div>Modify property on parent state, object.someProperty:'
+' <input ng-model="object.someProperty">'
+' {{object.someProperty}}'
+' </div>'
+' </div>'
+' Include Child State'
+' <ui-view></ui-view>',
controller: function($scope) {

$scope.object = object;

},
resolve: {
object: [function() {
var object = '';
object.someProperty = 'initialValue';
return object;
}]
}
})

和子状态:

  .state('parent.child', {
template: ''
+' <div>Child State</div>'
+' <div>Watch property from parent state, object.someProperty'
+' {{object.someProperty}}'
+' </div>',
resolve: {
objectFromParent: ['object', function(object) {
return object;
}]
},
controller: function(objectFromParent) {

$scope.objectFromParent = objectFromParent;
}
});
});

子状态中的resolve是否只在实例化时发生?即——一旦子状态从父状态解析了对象,它就不再监听解析对象的变化了吗?看起来不应该是这样。

PLNKR 可能出了问题——我的代码因未知原因无法运行: http://plnkr.co/edit/EjV4TtSIP6HpVMG0oanL?p=preview

任何方向或见解都值得赞赏。谢谢你!

最佳答案

您的所有期望都是正确的。还有一个bit adjusted plunker这是有效的。

最重要的变化是使共享对象成为真实对象(不是字符串)

$stateProvider.state('parent', {
url: '/parent',
template: ...,
controller: function($scope, object) {
$scope.object = object;
},
resolve: {
object: [function() {
//var object = '';
var object = {};
object.someProperty = 'initialValue';
return object;
}]
}

主要是行:

//var object = '';
var object = {};

这样,$scope.object 就变成了一个引用对象。这意味着, parent 和 child 将共享对该对象的引用。事实上 - 如果有人会改变它(添加属性,改变那个属性) - 所有人都会知道这个变化......因为他们共享对一个对象的引用

查一下here

关于javascript - AngularJS UI-路由器 : Two way binding between resolved object in child/parent state—Child state won't update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30562408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com