离子不反映父范围的变化
Ionic not reflecting Changes to parent scope
我在 pure angular.js with ng-router
做过很多次,但不知道 ionic using ui-router
有什么问题
我想在父作用域上有一些 $scope
properties/objects,我可以从子作用域读取和修改它们,它们可以反映每个地方(没有工厂), 所以状态之间的刷新不会丢失数据,我有共同的地方来保存它
我试过的:
我首先尝试将整个应用程序路由包裹在 div
<div ng-controller="appCtrl">
<div ui-view></div>
</div>
这没有用,所以我将应用程序状态设为 abstract
状态和控制器,现在所有状态都继承自它
.state('app', {
url: "/app",
abstract: true,
controller : 'appCtrl',
templateUrl: "templates/app.html"
})
.state('app.login', {
url: "/login",
parent:"app",
//abstract: true,
controller : 'loginCtrl',
templateUrl: "templates/login.html"
})
.state('app.form', {
url: "/form/:selectedForm",
//abstract: true,
//reload:true,
parent:"app",
controller : 'formCtrl',
templateUrl: "templates/selected-form.html"
})
尝试时遇到问题:
问题是假设我在 appCtrl
上有一个 属性 $scope.selectedForm=21;
,我可以正确访问它(在所有状态下显示 21)但是 cant modify it
($scope.selectedForm=22;
) 它不会反射回来
虚拟控制器
appctrl(父级):
.controller('appCtrl', function ($scope) {
$scope.InspectedForms = [];
$scope.currentForm= {}
$scope.selectedForm=21;
})
formCtrl(子):
.controller('formCtrl', function ($scope, $stateParams, authService) {
$scope.selectedForm=22;
});
答案很明显,我怎么忘了dot rule
浪费了我几个小时,想post好像其他人都被这种问题卡住了
更改仅反映在 objects and array
和 not on primitive types
Parent:
app.controller('Parentctrl',function($scope){
$scope.parentprimitive = "some primitive value"
$scope.parentobj = {};
$scope.parentobj.parentproperty = "somevalue";
});
Child:
app.controller('ctrlChild',function($scope){
$scope.parentprimitive = "this will NOT modify the parent"
$scope.parentobj.parentproperty = "this WILL modify the parent";
});
Here是关于继承的详细信息
我在 pure angular.js with ng-router
做过很多次,但不知道 ionic using ui-router
我想在父作用域上有一些 $scope
properties/objects,我可以从子作用域读取和修改它们,它们可以反映每个地方(没有工厂), 所以状态之间的刷新不会丢失数据,我有共同的地方来保存它
我试过的:
我首先尝试将整个应用程序路由包裹在 div
<div ng-controller="appCtrl">
<div ui-view></div>
</div>
这没有用,所以我将应用程序状态设为 abstract
状态和控制器,现在所有状态都继承自它
.state('app', {
url: "/app",
abstract: true,
controller : 'appCtrl',
templateUrl: "templates/app.html"
})
.state('app.login', {
url: "/login",
parent:"app",
//abstract: true,
controller : 'loginCtrl',
templateUrl: "templates/login.html"
})
.state('app.form', {
url: "/form/:selectedForm",
//abstract: true,
//reload:true,
parent:"app",
controller : 'formCtrl',
templateUrl: "templates/selected-form.html"
})
尝试时遇到问题:
问题是假设我在 appCtrl
上有一个 属性 $scope.selectedForm=21;
,我可以正确访问它(在所有状态下显示 21)但是 cant modify it
($scope.selectedForm=22;
) 它不会反射回来
虚拟控制器
appctrl(父级):
.controller('appCtrl', function ($scope) {
$scope.InspectedForms = [];
$scope.currentForm= {}
$scope.selectedForm=21;
})
formCtrl(子):
.controller('formCtrl', function ($scope, $stateParams, authService) {
$scope.selectedForm=22;
});
答案很明显,我怎么忘了dot rule
浪费了我几个小时,想post好像其他人都被这种问题卡住了
更改仅反映在 objects and array
和 not on primitive types
Parent:
app.controller('Parentctrl',function($scope){
$scope.parentprimitive = "some primitive value"
$scope.parentobj = {};
$scope.parentobj.parentproperty = "somevalue";
});
Child:
app.controller('ctrlChild',function($scope){
$scope.parentprimitive = "this will NOT modify the parent"
$scope.parentobj.parentproperty = "this WILL modify the parent";
});
Here是关于继承的详细信息