Angularjs Двусторонние обязательные вопросы
Я пытаюсь создать динамическую директиву, которая будет получать его параметры привязки из атрибутов. Это мой вид контроллера:
<div ng-controller="OtCtrl">
<div ng-include src="'/client/views/openTradeView.html'"></div>
</div>
мой взгляд:
<div>
{{name}}
<div swings binding="Risk" title="Risk"></div>
<div swings binding="Amount" title="Amount"></div>
</div>
Это моя директива
<div>
{{title}}
<a href="javascript:void(0)" ng-click="minus()">-</a>
{{amount}}
<a href="javascript:void(0)" ng-click="plus()">+</a>
</div>
Это моя директива:
app.directive("swings", function () {
return {
replace: true,
scope: {
title : '@title',
amount: '=binding',
extra: '=bindingExtra'
},
resctrict: "A",
controller: function($scope){
$scope.minus = function (event, binding) {
$scope.amount -= 1;
console.log(binding)
}
$scope.plus = function (event) {
$scope.amount += 1;
}
},
templateUrl: '/client/views/swingsDirectiveView.html'
}
});
И наконец мой контроллер:
app.controller("OtCtrl", ['$scope', function ($scope) {
$scope.Amount = 400;
$scope.Risk = 100;
setInterval(function(){
console.log($scope.Risk)
},2000);
}]);
Я знаю, что когда я использую ng-view, angularjs создает новую область видимости. Моя проблема в том, что когда я нажимаю плюс или минус, сумма в директиве обновляется, но модель риска в контроллере нет, а при первой загрузке директива принимает начальное значение риска и устанавливает сумму.
Как я могу исправить эту проблему.
Спасибо
1 ответ
Я бы предложил создать model
Свойство в вашем контроллере выглядит так:
app.controller("OtCtrl", ['$scope', function($scope) {
$scope.model = {
Amount: 400,
Risk: 100
}
}]);
Затем привяжите это к вашей директиве через:
<div swings binding="model.Risk" title="model.Risk"></div>
Вероятно, происходит то, что наследование области создает копию Amount
а также Risk
(так как они примитивы); тогда как создание такого объекта приводит к копированию ссылки, то есть иерархия области использует одни и те же данные.