ディレクティブに送信したいが、コントローラ内のデータが変更された場合、そのデータを更新したままにしておきたい。コントローラからディレクティブへデータを送信
// Controller
angular
.module('app')
.controller('IndexController', IndexController)
IndexController.$inject = [];
function IndexController() {
var vm = this;
vm.name = 'John';
newName = function() {
vm.name = 'Brian';
}
newName();
}
// Directive
angular
.module('app')
.directive('userName', userName);
userName.$inject = ['$document'];
function userName($document) {
var directive = {
restrict: 'EA',
template: '<div id="user"></div>',
replace: true,
scope: {
name: '='
},
link: function(scope, elem, attrs) {
console.log(scope.data);
}
}
return directive;
}
これは私が指示を使用する方法です。コントローラの変更後に常に新しい名前ではなく最初の名前が返されるという問題があります。
<div ng-controller="indexController">
<user-name name="indexController.name">
</div>
ありがとうございました。
へ
$scope
を注入する必要があり、これを試してみてください。これは完全に機能します。私はまだ$スコープ、VMとこれは – handsomeOK ..と本当に混同していると思います。それは与えられたシナリオでのみ動作します。私がをクリックしても動作しません。他に何が欠けていますか?ありがとうございました! – handsome
あなたは何も変更する必要はありません。ちょうどng-clickで動作する上記の回答を更新しました。 – nivas