首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改angular-material指令并编译它

如何更改angular-material指令并编译它
EN

Stack Overflow用户
提问于 2017-02-24 22:25:16
回答 1查看 561关注 0票数 0

如果我编译原生html元素,它工作得很好。

但是如果我编译编译角度材质元素(md-button)在控制台中显示"Error: ngTransclude:孤立“。

我太累了,弄不明白。我需要从模板中获取html代码,我知道当我们从字符串值创建元素并编译它时,它工作得很好。也许它必须使用$mdCompiler,但我不知道如何使用。

这里有一个简单的小例子,请帮帮我。

代码语言:javascript
复制
<!doctype html>
<html lang="en" >
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.1/angular-material.min.css">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body ng-app="BlankApp" ng-cloak>
	<div ng-controller="myCtrl">
		<mydir></mydir>
	</div>

  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular-animate.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular-aria.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular-messages.min.js"></script>

  <script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.1/angular-material.min.js"></script>
  
  <script type="text/javascript">
	console.log("\n\n\n\n\n");
	console.clear();
	
    var app = angular.module('BlankApp', ['ngMaterial']);
	
	app.controller("myCtrl", function($scope) {  } );
	
	app.directive('mydir', ['$compile', function($compile){
		return {
			scope: {
			},
			template: 
				"<md-button>md Button</md-button>" + 
				"<button>Native Button</button>" + 
				"<span> HelpMePlease </span>", 
			restrict: "E",
			link: function(scope, element, attrs) {
				scope.fn = function () { console.log("Hello"); };

				var mdButton = element.find("button").eq(0);
				mdButton.attr("ng-click", "fn()");
				$compile(mdButton)(scope);
				console.log(mdButton[0]);

				var button = element.find("button").eq(1);
				button.attr("ng-click", "fn()");
				$compile(button)(scope);
				console.log(button[0]);
			}
		};
	} ] );
	
  </script>
  
</body>
</html>

EN

回答 1

Stack Overflow用户

发布于 2017-02-25 01:18:41

这是因为md-button已经编译了。

也许,你可以用这个。

jsfiddle上的示例。

代码语言:javascript
复制
var app = angular.module('BlankApp', ['ngMaterial']);

app.controller("myCtrl", function($scope) {});

app.directive('mydir', ['$compile', '$mdCompiler', function($compile, $mdCompiler) {
  return {
    scope: {},
    template:"<button>Native Button</button>" +
      "<span> HelpMePlease </span>",
    restrict: "E",
    link: function(scope, element, attrs) {
      scope.fn = function() {
        console.log("Hello");
      };

      $mdCompiler.compile({
        template: '<md-button ng-click ="fn()" >md Button</md-button>'
      }).then(function(compileData) {
        compileData.link(scope);
        element.prepend(compileData.element);
      });

      var button = element.find("button").eq(0);
      button.attr("ng-click", "fn()");
      $compile(button)(scope);
    }
  };
}]);
代码语言:javascript
复制
<!doctype html>
<html lang="en">

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.1/angular-material.min.css">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>

<body ng-app="BlankApp" ng-cloak>
  <div ng-controller="myCtrl">
    <mydir></mydir>
  </div>

  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular-animate.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular-aria.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular-messages.min.js"></script>

  <script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.1/angular-material.min.js"></script>

</body>

</html>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42441077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档