gpt4 book ai didi

angularjs - 如何在 AngularJs 中的指令内修改范围

转载 作者:行者123 更新时间:2023-12-02 22:14:15 30 4
gpt4 key购买 nike

我需要从指令内的回调中修改根范围属性。但该指令位于由 switch 指令创建的内部作用域中。

HTML

<div ng-app="app" ng-controller='AppController'>
<p>Selected: {{ selected }}</p>
<div ng-switch on="selected">
<div ng-switch-default>
<p>Item: {{ selected }}</p>
<custom-tag selected-item="selected" />
</div>
<div ng-switch-when="New value">
<p>Worked</p>
</div>
</div>
</div>

JavaScript

angular.module('app', [])    
.directive("customTag", [function () {
return {
restrict: "E",
replace: true,
template: "<input type='button' value='Click me' />",

link: function (scope, element, attrs) {
element.bind('click', function () {
scope[attrs.selectedItem] = "New value";
scope.$apply();
});
}
};
}]);

function AppController($scope) {
$scope.selected = 'Old value';
}

fiddle :http://jsfiddle.net/nJ7FQ/

我的目标是能够在选定区域中显示“新值”。我怎样才能完成我想做的事情?我做错了什么?

此外,因为我正在尝试制作一个组件。有没有办法在隔离范围内执行相同的操作?

最佳答案

我更新了 fiddle ,基本上必须转到父级才能获取正确的“选定”变量,还使用隔离范围 = 来获取传入值和内部模型之间的两种方式绑定(bind)。

http://jsfiddle.net/nJ7FQ/2/

angular.module('app', [])

.directive("customTag", [function () {
return {
restrict: "E",
replace: true,
template: "<input type='button' value='Click me' />",
scope: {model:'='},

link: function (scope, element, attrs) {
element.bind('click', function () {
scope.model[attrs.selectedItem] = "New value";
scope.$apply();
});
}
};
}]);

function AppController($scope) {
$scope.selected = 'Old value';
}

和 HTML

<div ng-app="app" ng-controller='AppController'>
<p>Selected: {{ selected }}</p>
<div ng-switch on="selected">
<div ng-switch-default>
<p>Item: {{ selected }}</p>
<custom-tag selected-item="selected" model="$parent" />
</div>
<div ng-switch-when="New value">
<p>Worked</p>
</div>
</div>
</div>

更新了 fiddle 以使用您对属性的原始读取: http://jsfiddle.net/nJ7FQ/4/

关于angularjs - 如何在 AngularJs 中的指令内修改范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17561632/

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