如何将范围放在指令中以在更改视图时停止丢失它
How can I put the scope in a directive to stop loosing it when changing views
我的第一个Angular项目,我有点困惑。我有一个定义范围的滑块(我相信),但是当我切换视图时会丢失该范围。 我不确定如何将范围放入指令中,以便两个视图都可以访问它,我相信这是解决方案。
索引.html
<div ng-view></div>
<div id="footerContainer">
<a href="#data">SWITCH VIEW</a>
</div>
</div>
输入.html
<div id="wrapper">
<div ng-controller="SomeController">
<div id="sliderContainer">
Price: {{price}}
<div id="mySlider" slider config="sliderConfig" model="price" ng-model="price" class="slider"></div>
</div>
</div>
数据.html
<div ng-controller="SomeController">
<div>
Price: {{price}}
</div>
</div>
主.js
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'input.html'
})
.when('/data', {
templateUrl: 'data.html'
});
}
]);
myApp.controller("SomeController", function($scope) {
$scope.sliderConfig = {
min: 1,
max: 101,
step: 10
}
$scope.price = 1;
$scope.setPrice = function(price) {
$scope.price = price;
}
});
myApp.directive("slider", function() {
return {
restrict: 'A',
scope: {
config: "=config",
price: "=model"
},
link: function(scope, elem, attrs) {
var setModel = function(value) {
scope.model = value;
}
$(elem).slider({
range: false,
min: scope.config.min,
max: scope.config.max,
step: scope.config.step,
slide: function(event, ui) {
scope.$apply(function() {
scope.price = ui.value;
});
}
});
}
}
});
你试过$rootScope吗?它是一个全局变量,所以如果你在rootScope中设置了一些东西,它可以通过应用程序访问,比如如果你设置,$rootScope.用户名 ,它可以在所有视图中访问。
切换视图时,angular 正在创建 SomeController 的新实例。 您需要将"price"值保留在某个位置,以便在主视图之间共享它,例如在外部(父)范围、上下文服务或其他一些全局可访问的数据结构中。
相关文章:
- 在MVVM视图模型中处理应用程序范围的元素
- JSON范围的更改没有反映在angularjs中的视图中
- 将范围添加到角度种子默认视图控制器时,测试套件现在失败
- 范围变量更新,但不更新视图
- 使用ng repeat添加多个视图实例时的范围界定问题
- 单击视图时的应用器范围问题
- 如何将范围放在指令中以在更改视图时停止丢失它
- 如何在您尚未进入的视图中更改 Angular 中的范围
- 将重复控件绑定到会话或视图范围变量
- 视图模型中的功能范围
- AngularJS:多个视图中的范围未更新
- 用于筛选日期范围之间的数据的沙发基视图
- 杜兰达尔视图模型中的范围界定
- 范围值未显示在视图中
- 如何使用 angularjs 在视图中重新获取范围值
- 使用自定义控制器在不同视图中共享范围
- 在视图中简单呈现 AngularJS 范围数据
- 主干视图范围问题
- AngularJS ui视图未接收范围
- 在OpenLayers 3中设置视图范围