假设这是一个相当简单的修复,而且我已经完全错过了一些东西..
我基本上有一个按钮,当用户点击它时,它将使用ui-router进入新状态。在状态更改之后,脚本中的值将立即使用我在脚本中的$ scope中设置的值填充简单段落标记的空值。
这不起作用,请参见下面的示例:
脚本
app.controller('myCtrl', ['$scope', 'Auth', '$state', '$timeout',
function($scope, Auth, $state, $timeout) {
$scope.buttonClick = function () {
$state.go('newState');
$timeout(function () {
$scope.newValue = 'Hello';
}, 1000);
};
}]);
HTML
<p>{{newValue}}</p>
现在,我已经尝试了各种组合,并注意到通过取“ $ scope.newValue ='Hello'; '这一行并将其置于按钮点击功能之外将导致它工作得很好。然而,我正在创建一个应用程序,其中将有进一步的按钮单击事件,每个事件都将相同的值更改为适用于按钮单击事件的特定值。
答案 0 :(得分:2)
当您正在$state.go('newState')
导航到另一个视图,从而在尝试设置$scope
$scope.newValue = 'Hello';
您需要在&#34; $scope.newValue = 'Hello';
&#34;中设置newSate-controller
。对于您导航到的视图。
答案 1 :(得分:2)
app.controller('myCtrl', ['$scope', 'Auth', '$state', '$timeout',
function($scope, Auth, $state, $timeout) {
$scope.newValue = '';
$scope.buttonClick = function () {
$timeout(function () {
$scope.newValue = 'Hello';
}, 1000);
};
}]);
这应该有效
答案 2 :(得分:0)
首先在外面初始化
app.controller('myCtrl', ['$scope', 'Auth', '$state', '$stateParams', '$timeout',
function($scope, Auth, $state, $timeout) {
if( $stateParams.newVal != null ){
$scope.newValue = $stateParams.newVal;
}
$scope.buttonClick = function () {
$state.go('newState', { newVal : 'Hello'});
};
}]);
在你的州定义中使用'params'参数
.state('newState', {
.......
.......
params : { newVal: null },
.......
.......
})
答案 3 :(得分:0)
问题在于$ state.go('newState');它重定向到另一个状态并重新加载页面。如果它的状态相同也可能发生