angular - 在 Sitefinity 内容中使用角度元素的具体示例
问题描述
寻找在 Sitefinity 页面中包含角度元素的简单完整示例。知道如何将 Angular4 应用程序添加为 sitefinity cms 中的内容页面吗?暗示它,但缺乏细节。谢谢!
解决方案
我有一个使用 AngularJS 版本 1.x 的示例。就我而言,我需要在页面上显示信用卡费率,使用 AngularJS 从 Web 服务中提取费率。
第 1 步:创建自定义 MVC 小部件。理论上,您甚至可以在步骤 2 中使用内容块来保存标记,而不是使用自定义小部件。
文件:SitefinityWebApp/MVC/Controllers/FeaturedRateController.cs
namespace Website.Mvc.Controllers
{
[ControllerToolboxItem(Name = "FeaturedRate", Title = "Featured Rate", SectionName = "...", CssClass = "sfNewsViewIcn sfMvcIcn")]
public class FeaturedRateController : BaseController<FeaturedRateViewModel>
{
public override ActionResult Index()
{
// Some code is omitted to set model properties.
return View("Default", Model);
}
}
}
第 2 步:创建小部件视图。
文件:SitefinityWebApp/MVC/Views/FeaturedRate/Default.cshtml
@model Website.Mvc.Models.FeaturedRateViewModel
<!-- Some markup is omitted -->
<div>
<featured-rate rateId="@Model.RateId" rateType="@Model.RateType">...</featured-rate>
</div>
第 3 步:创建 AngularJS 组件。我喜欢将我的 javascript 文件保存在与 razor 视图相同的目录中,这样我在处理某个功能时就不必在文件资源管理器中跳来跳去。
文件:SitefinityWebApp/MVC/Views/FeaturedRate/featured-rate.component.js
(function () {
angular
.module('mymodule')
.component('featuredRate', {
template: '<span class="rate">{{vm.rate.value}}</span><span class="units">{{vm.rate.units}}</span>',
transclude: true,
controllerAs: 'vm',
controller: featuredRate,
bindings: {
rateid: '@',
ratetype: '@'
}
});
featuredRate.$inject = ['$http'];
function featuredRate($http) {
this.$onInit = function () {
var vm = this;
getCurrentRate(vm.ratetype, vm.rateid)
.then(function (response) {
vm.rate = parseResponse(vm.ratetype, response.data);
}, function (response) {
console.log(response.status);
vm.rate = {
value: '...',
units: ''
};
});
};
function getCurrentRate(type, id) {
// implementation omitted.
}
}
})();
我正在使用 Gulp 任务将我的所有 js 文件/角度组件连接到文件 /assets/dist/js/main.js。然后,我从我的默认模板加载该文件。
文件:SitefinityWebApp/ResourcePackages/Bootstrap4/MVC/Views/Layouts/Base.cshtml
@Html.Script(Url.Content("~/assets/dist/js/main.js"), true, "bottom")
推荐阅读
- python - TypeError:参数值不可迭代或分布
- javascript - Javascript 等效于带有过渡的 jQuery .show(200)?
- postgresql - 我如何知道何时将一组约束添加到特定表中?
- opengl - GL_ARB_compatibility 在核心配置文件中是否有效?
- jquery - jQuery,在更改时停止先前的更改,如果无效,则在超时后执行输入事件
- javascript - window.addEventListener 正在监听 window.parent.postMessage 两次
- javascript - protobufjs:“任何”用法
- javascript - 如何同步处理 JavaScript
- php - 使用 isset() 检查空字段,如果该字段为空,则应跳转到 else 语句,但该语句不起作用
- r - 制作两个数据集列名的索引/表