我目前正在Knockout中构建一个重型应用程序.在我的应用程序中有三种类型的数字:百分比,小数和大数字,我有每种类型的自定义绑定处理程序.
对于输入,我还创建了一个数字验证bindingHandler,它读取每个按键以确保它是一个输入的数字.(在应用程序中有华丽的边框CSS动画和东西 - 这只是一个简单的剥离示例).
现在要让输入执行验证检查和数字格式化,我必须将变量绑定两次,正如您在下面的小提琴中正确看到的那样.
<input data-bind="number: testdata, percentage: testdata">
Run Code Online (Sandbox Code Playgroud)
我认为这会不必要地增加我的HTML标记,并且必须有一种更整洁的方式来同时触发两个处理程序.
我的问题:是否可以将数字验证脚本创建为一个函数,然后可以在数字格式处理程序中共享/包含该函数; 没有膨胀我的Javascript?
我仍然是Knockout的新手,所以我仍然不确定它的界限.
在我的Angular应用程序中,我有以下<select>元素,如下所示:
HTML
<select name="device[ [[$index]] ]" ng-model="selectedModel" ng-change="loadModelImage(selectedModel)">
<option value="">Model</option>
<option ng-repeat="model in manufacturerModels" value="[[model.id]]">[[model.model]]</option>
</select>
Run Code Online (Sandbox Code Playgroud)
JS
$scope.manufacturerModels = $filter('filter')($scope.models, {manufacturer_id: manufacturerId});
Run Code Online (Sandbox Code Playgroud)
上述AngularJS代码段将返回存储在API中的手机型号的JSON响应.(我会在这里发布一个例子,但每个对象都很冗长).
无论如何,每个'模型'内部都是变体的子数组 - 包含可用于该设备的颜色和内存大小的对象.
例如:
{
model: "iPhone 6",
manufacturer: "Apple",
variants: [
{
color: "space grey",
memory: "128GB"
}
{
color: "gold",
memory: "16GB"
}
{
color: "space grey",
memory: "64GB"
}
]
}
Run Code Online (Sandbox Code Playgroud)
目标
我想知道是否有可能(如果是这样,如何)<option>使用名称中的变体填充模型下拉列表.所以当前它说[[model.model]] 的名称(.model是名称),我需要每个选项说:"iPhone 6 space grey 128GB"
PS.角度插值温度 改成[[ ]]由于使用mustachePHP同一页面.
我目前正在构建一个使用 Stripe 进行支付的节点应用程序。我已经设置了 webhooks 并开始工作,因为我想在我的应用程序中创建订阅者,但是需要来自 Stripe webhooks 的响应来存储我的 mongo db 中不同集合中不同事件的接收数据。
我遇到的问题是 Stripe 发送的事件顺序并不总是相同的顺序,为了在文档/集合之间创建关系,我需要按以下顺序触发事件处理程序:
就目前而言,2 的事件处理程序可以在 1 之前和 3 在 2 之前执行,等等。
确保我的处理程序每次都以正确的顺序执行的最佳方法是什么?我在想某种承诺。如果是这种情况,node 的一个好的承诺模块是什么?
我在 Knockout 中构建了一个非常数据/数字的应用程序。我目前收到错误:
未捕获错误:除非指定“写入”选项,否则无法将值写入 ko.compulated。如果您想读取当前值,请不要传递任何参数。
当我的自定义绑定处理程序(将数字格式化为“大”形式,即 123,345,678,987)尝试写回显示计算函数值的原始输入时,就会发生这种情况。
输入元素中显示的值:
self.value = ko.computed(function(){
return self.chosenAge().population; // 'fetched' from an array.
});
Run Code Online (Sandbox Code Playgroud)
绑定处理程序:
ko.bindingHandlers.largeNumber = {
init: function(element, valueAccessor) {
numberInit(element);
var value = valueAccessor();
var interceptor = ko.computed({
read: function() {
// inject number formatting
return numeral(ko.unwrap(value)).format('0,0');
},
write: function(newValue) {
// remove formatting when writing a new value
value(numeral().unformat(newValue));
}
});
// display new value in target element
if(element.tagName.toLowerCase() == 'input' ) {
ko.applyBindingsToNode(element, {
value: interceptor
});
}
else { …Run Code Online (Sandbox Code Playgroud) 我目前通过mongoose架构保存数据并从数据库过期,如下所示:
var UserSchema = new Schema({
createdAt: { type: Date, expires: '1m' },
name: String,
email: String
});
Run Code Online (Sandbox Code Playgroud)
唯一的问题是保存到数据库的文档已从数据库中完全删除.我将如何重构上述内容,以便名称/电子邮件地址保留在数据库中,但如果用户在到期日后尝试登录,则会收到一条消息"会话已过期,续订会话".(或类似的东西)
我想这样做,因为如果用户使用过期的电子邮件地址登录,服务器仍然能够查找电子邮件地址并吐出"过期的会话"消息,而不是"未找到"错误,这是删除数据时会发生什么.
重申一下,如何将过期数据保存在mongo/mongoose数据库中,以便应用程序能够找到用户尝试登录的电子邮件地址,但如果他们的会话已过期,他们需要续订会话吗?
我有一个淘汰应用程序,在其中我有一个功能,显示/隐藏页面上的元素取决于所选的选项.选择用于激活特定切换的按钮将具有"活动"类,以便它与其他按钮"脱颖而出",并且可以清楚地看到这是所选选项.我的问题是我创建了一个敲门功能来切换活动类,但是它触发所有按钮上的活动状态而不是所选按钮,我不知道为什么?
var viewModel = function(){
var self = this;
self.isActive = ko.observable(false);
self.toggleActive = function(data, event){
self.isActive(!self.isActive()); //toggle the isActive value between true/false
}
}
<button data-bind="click: toggleActive, css : {'activeStyle' : isActive}">Toggle Active</button>
<button data-bind="click: toggleActive, css : {'activeStyle' : isActive}">Toggle Active</button>
<button data-bind="click: toggleActive, css : {'activeStyle' : isActive}">Toggle Active</button>
Run Code Online (Sandbox Code Playgroud)
我有一个应用程序,我正在建设与phonegap(html5/js)和这个@autoreleasepool错误突然出现,我不是一个xcode开发人员,所以不知道如何解决这个问题.
突出显示的代码是:
int main(int argc, char* argv[])
{
@autoreleasepool {
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
return retVal;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试根据其他线程的建议将自动引用计数转为否,但是,这不起作用.
可能导致这种情况的任何想法?提前致谢!
突然之间(上周工作正常)我Error sending mail: Error: connect EADDRNOTAVAIL在尝试使用Nodemailer发送电子邮件时已经开始了.
错误真的很模糊,我不太确定是什么EADDRNOTAVAIL意思.如果有人能够对这个错误有所了解,那就太棒了!
javascript ×5
knockout-2.0 ×3
knockout.js ×3
node.js ×3
express ×2
mongodb ×2
mongoose ×2
angularjs ×1
cordova ×1
ios ×1
jquery ×1
nodemailer ×1
xcode ×1