如何根据预定义条件将 HTML 组件与 ng-repeat 绑定
How to bind HTML component with ng-repeat based on a pre-defined condition
我对 AngularJS 很陌生。我制作了一个 html 组件,可在整个应用程序中重复使用。假设这个组件给出了产品的基本信息。 HTML的基本结构如下:
<div class="visible-sm-block">
<div class="row">
<div class="col-sm-2">
<img class="img-circle img-responsive" alt="Image of product"
ng-src="{{}}"/>
</div>
<div class="col-sm-10">
<label>{{ProductName}}</label>
<p>{{CompanyName}}</p>
<p>{{ShippedTo}}</p>
</div>
</div>
</div>
product.js 文件如下:
(function() {
'use strict';
angular
.module('product')
.directive('productDetails', productDetails);
/** @ngInject */
function productDetails() {
var directive = {
restrict: 'E',
templateUrl: 'app/components/productDetails/productDetails.html'
};
return directive;
}
})();
小 HTML 组件将在应用中的其他 HTML 页面中重复使用,如下所示:
<product-details></product-details>
现在的问题是,当 HTML 组件在我的页面中使用时,我无法将数据与该组件绑定。这些页面的控制器位于单独的文件夹中:app/productshipping/productshipping.controller.js
我尝试在 HTML 组件本身中使用 ng-controller="controller_name" 但没有结果。 :( 请帮忙。
这真是一个有趣的问题。代码如下。我正在开发一个 angular 框架。如果您需要任何进一步的帮助,请告诉我。
Product.js文件如下
"use strict";
angular.module("app",[]);
angular.module("app").controller("productController", ['$scope', function ($scope) {
}]);
angular.module("app").directive("tmHtml", function () {
return {
transclude: false,
scope: {
productName: '@',
companyName: '@',
shippedTo: '@'
},
controller: "productController",
templateUrl: "/templates/HideShow.html"
};
});
模板HTML文件如下
<html ng-app="app">
<head>
<title></title>
<link href="../Content/bootstrap.min.css" rel="stylesheet" />
<script src="../Scripts/jquery-1.10.2.js"></script>
<script src="../Scripts/bootstrap.js"></script>
</head>
<body ng-controller="productController">
<div class="visible-sm-block">
<div class="row">
<div class="col-sm-2">
<img class="img-circle img-responsive" alt="Image of product" ng-src="{{}}" />
</div>
<div class="col-sm-10">
<label>{{productName}}</label>
<p>{{companyName}}</p>
<p>{{shippedTo}}</p>
</div>
</div>
</div>
</body>
</html>
如何重用它如下
<html ng-app="app">
<head>
<title></title>
<link href="../Content/bootstrap.min.css" rel="stylesheet" />
<script src="../Scripts/jquery-1.10.2.js"></script>
<script src="../Scripts/bootstrap.js"></script>
<script src="../Scripts/angular.js"></script>
<script src="../js/Product.js"></script>
</head>
<body>
<div>
<tm-Html product-Name="Sankar" company-Name="Sankar" shipped-To="Sankar">
</tm-Html>
</div>
</body>
</html>
我对 AngularJS 很陌生。我制作了一个 html 组件,可在整个应用程序中重复使用。假设这个组件给出了产品的基本信息。 HTML的基本结构如下:
<div class="visible-sm-block">
<div class="row">
<div class="col-sm-2">
<img class="img-circle img-responsive" alt="Image of product"
ng-src="{{}}"/>
</div>
<div class="col-sm-10">
<label>{{ProductName}}</label>
<p>{{CompanyName}}</p>
<p>{{ShippedTo}}</p>
</div>
</div>
</div>
product.js 文件如下:
(function() {
'use strict';
angular
.module('product')
.directive('productDetails', productDetails);
/** @ngInject */
function productDetails() {
var directive = {
restrict: 'E',
templateUrl: 'app/components/productDetails/productDetails.html'
};
return directive;
}
})();
小 HTML 组件将在应用中的其他 HTML 页面中重复使用,如下所示:
<product-details></product-details>
现在的问题是,当 HTML 组件在我的页面中使用时,我无法将数据与该组件绑定。这些页面的控制器位于单独的文件夹中:app/productshipping/productshipping.controller.js 我尝试在 HTML 组件本身中使用 ng-controller="controller_name" 但没有结果。 :( 请帮忙。
这真是一个有趣的问题。代码如下。我正在开发一个 angular 框架。如果您需要任何进一步的帮助,请告诉我。
Product.js文件如下
"use strict";
angular.module("app",[]);
angular.module("app").controller("productController", ['$scope', function ($scope) {
}]);
angular.module("app").directive("tmHtml", function () {
return {
transclude: false,
scope: {
productName: '@',
companyName: '@',
shippedTo: '@'
},
controller: "productController",
templateUrl: "/templates/HideShow.html"
};
});
模板HTML文件如下
<html ng-app="app">
<head>
<title></title>
<link href="../Content/bootstrap.min.css" rel="stylesheet" />
<script src="../Scripts/jquery-1.10.2.js"></script>
<script src="../Scripts/bootstrap.js"></script>
</head>
<body ng-controller="productController">
<div class="visible-sm-block">
<div class="row">
<div class="col-sm-2">
<img class="img-circle img-responsive" alt="Image of product" ng-src="{{}}" />
</div>
<div class="col-sm-10">
<label>{{productName}}</label>
<p>{{companyName}}</p>
<p>{{shippedTo}}</p>
</div>
</div>
</div>
</body>
</html>
如何重用它如下
<html ng-app="app">
<head>
<title></title>
<link href="../Content/bootstrap.min.css" rel="stylesheet" />
<script src="../Scripts/jquery-1.10.2.js"></script>
<script src="../Scripts/bootstrap.js"></script>
<script src="../Scripts/angular.js"></script>
<script src="../js/Product.js"></script>
</head>
<body>
<div>
<tm-Html product-Name="Sankar" company-Name="Sankar" shipped-To="Sankar">
</tm-Html>
</div>
</body>
</html>