2

ng-bind='data'ディレクティブを介して要素に属性を追加しています

myApp.directive('myDiv', function() {
    return {
        restrict: 'E',
        link: function($scope, element, attrs) {
            element.html('<div ng-bind="data">me</div>');
}   };  });
function MyCtrl($scope) {
    $('#click').click(function() {
        $scope.data = 'change';
}); }

しかし、ng-bind が期待どおりに機能していません。

http://jsfiddle.net/HB7LU/3427/

4

3 に答える 3

2

@drew_w が言っ$compileたように、リンクから適用する必要がある場合は、要素をコンパイルする必要があります。

またはtemplate、次のように直接使用できます

template: '<div ng-bind="data"></div>'

私は主にテンプレートを好む

また、次のようなjquery関数を使用しないでください

 $('#click').click(function() {
        $scope.data = 'change';
});

代わりに使用できます

  $scope.change = function()
    {
        $scope.data = 'change';
    }

また

ng-click="data = 'change'"  

@drew_wが言ったように

完全なコードを見てください

ワーキングデモ

html

<div ng-controller="MyCtrl">Hello, {{name}}!
    <button id='click' ng-click="change()">click to 'change'</button>
    <my-div>watch, this doesn't change!!!???</my-div>
</div>

脚本

var myApp = angular.module('myApp', []);

myApp.directive('myDiv', function ($compile) {
   return {
            restrict: 'E',
            template:'<div ng-bind="data"></div>'
        };
});

myApp.controller('MyCtrl', function ($scope) {
    $scope.data = "me";
    $scope.name = 'Superhero';

    $scope.change = function () {
        $scope.data = 'change';
    }
});
于 2014-05-02T14:39:52.433 に答える