<div style="background-color:red">
<div style="display:inline-block;background-color:green;height:20px;width:20px;"></div>
</div>
<div style="background-color:yellow">
<div style="display:inline-block;background-color:green;height:20px;width:20px;">hi</div>
</div>Run Code Online (Sandbox Code Playgroud)
在FF或Chrome中渲染时,红色div的高度为26px,而黄色div的高度为20px.如何使红色div渲染与黄色div相同,但不包含任何文本?
我习惯于考虑这样的单页应用程序启动:1.将一些数据引导到关键模型中,2.实例化一个主控制器,然后3.调用它的render()方法来启动它.
这是如何用Ember完成的?根据文档中的(微薄,叹息)示例,当页面加载时,似乎有些事情会自行启动 - 模板被编译,视图在页面加载时呈现魔术.我觉得我错过了一些基本的东西.它有一个更复杂的应用程序的在线示例,用标签或动态加载的视图说什么?
灯泡,它不是.
我有一个简单的Handlebars帮助器,只需格式化货币价值.当我使用静态数据进行测试时,帮助程序工作属性,但是当我异步加载数据时则不行.换句话说,{{totalBillable}}将输出预期金额,但{{money totalBillable}}将输出零.但只有当数据通过ajax调用加载时.我到底做错了什么?
我试图尽可能地减少代码,并在这里创建了一个jsfiddle:http: //jsfiddle.net/Gjunkie/wsZXN/2/
这是一个Ember应用程序:
App = Ember.Application.create({});
Run Code Online (Sandbox Code Playgroud)
这是车把助手:
Handlebars.registerHelper("money", function(path) {
var value = Ember.getPath(this, path);
return parseFloat(value).toFixed(2);
});
Run Code Online (Sandbox Code Playgroud)
模型:
App.ContractModel = Ember.Object.extend({});
Run Code Online (Sandbox Code Playgroud)
应用控制器:
App.appController = Ember.Object.create({
proprietor: null,
});
Run Code Online (Sandbox Code Playgroud)
合同控制器(管理一系列合同):
App.contractsController = Ember.ArrayController.create({
content: [],
totalBillable: function() {
var arr = this.get("content");
return arr.reduce(function(v, el){
return v + el.get("hourlyRate");
}, 0);
}.property("content"),
Run Code Online (Sandbox Code Playgroud)
当所有者更改时,使用ajax请求获取新的合同数据.在异步获取数据时,把手助手不起作用.
proprietorChanged: function() {
var prop = App.appController.get("proprietor");
if (prop) {
$.ajax({
type: "POST",
url: '/echo/json/',
data: {
json: "[{\"hourlyRate\":45.0000}]",
delay: 1
},
success: …Run Code Online (Sandbox Code Playgroud)