gpt4 book ai didi

javascript - AngularJS - 获取输入值并将其传递到父指令范围

转载 作者:行者123 更新时间:2023-11-27 23:36:58 24 4
gpt4 key购买 nike

假设我有一个指令和一个 Controller 。

这是我的现场演示:http://embed.plnkr.co/LfLo0M8tVJyFNpJML5MU/

我试图在指令模板中添加一个输入字段,您可以在其中输入单词,然后按“反转”键反转字符串并更新 Controller 的视角。

但我得到:TypeError:无法读取未定义的属性“split”
在这一行 (26) 的 Scope.$scope.reverseName
处: $scope.reversedName = $scope.getName.split("").reverse().join("");.

您可以查看上面的 plunker 链接,或者这是我的代码:

app.js:

var app = angular.module('directive.main', []);

app.directive('myThing', function() {

return {
restrict: 'EA',
controller: 'Controller',
scope: {
reverse: "&",
name: "@",
getName: "="
},
templateUrl: 'template.html'
};
});

app.controller('Controller', ['$scope', function($scope) {
$scope.getName = "Rudolph";
$scope.reversedName = $scope.getName.split("").reverse().join("");
$scope.reverse = function() {
$scope.reversedName = $scope.getName.split("").reverse().join("");
$scope.name = $scope.getName;
};

}]);

template.html:

<div>Name:
<input placeholder="Type to reverse the string atop!" type='text' ng-model="getName" />
</div>

<div>Reversed Name: {{reversedName}}</div>

<input type='button' ng-click='reverse()' value='Reverse Name' /> for {{getName}}

index.html中的 Controller :

<body ng-controller="Controller">

<div>
<strong>Parent Scope:</strong>
<br /> Name: {{getName}}
<br />Reversed Name: {{reversedName}}
</div>

<br />

<strong>Isolated Directive's Scope</strong>

<my-thing reverse="reverseName()"></my-thing>

</body>

我做错了什么?为什么我的 {{getName}} 没有在父级中更新?但我不知道如何传递信息。

谢谢。

最佳答案

您遇到的问题是指令和 Controller 未附加。因此, Controller 不知道指令模板中 ng-model 属性中定义的 $scope.getName 变量。我还删除了 ng-controller 属性,因为该指令本身锁定了一个 Controller 。

我更改了模板和 Angular 代码,现在当您单击“反向名称”按钮时,您将获得反向名称。

app.js

var app = angular.module('directive.main', []);

app.directive('myThing', function() {

var controller = ['$scope', function($scope) {
$scope.name = "Well dude";
}];

return {
restrict: 'EA',
controller: 'Controller',
scope: {
reverse: "&",
name: "@",
getName: "="
},
templateUrl: 'template.html'
};
});

app.controller('Controller', ['$rootScope', '$scope', function($rootScope, $scope) {
$rootScope.getName = "Rudolph";
$rootScope.reversedName = $rootScope.getName.split("").reverse().join("");
$scope.reverse = function() {
$scope.reversedName = $scope.getName.split("").reverse().join("");
$scope.name = $scope.getName;
$rootScope.reversedName = $scope.reversedName;
$rootScope.getName = $scope.getName;
};
}]);

模板.html

<div>Name:
<input placeholder="Type to reverse the string atop!" type='text' ng-model="getName" />
</div>

<div>Reversed Name:
{{reversedName}}
</div>

<input type='button' ng-click='reverse()' value='Reverse Name' /> for {{getName}}

希望这有帮助

关于javascript - AngularJS - 获取输入值并将其传递到父指令范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050476/

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